@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/simple/Auth.js
CHANGED
|
@@ -1721,7 +1721,7 @@ class IssueReporter {
|
|
|
1721
1721
|
args.splice(1, 1);
|
|
1722
1722
|
}
|
|
1723
1723
|
|
|
1724
|
-
const date = moment__default[
|
|
1724
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
1725
1725
|
const message = args.join(', ');
|
|
1726
1726
|
let consoleMessage = message;
|
|
1727
1727
|
|
|
@@ -1898,7 +1898,7 @@ class IssueReporter {
|
|
|
1898
1898
|
payload._retry = retry + 1;
|
|
1899
1899
|
}
|
|
1900
1900
|
|
|
1901
|
-
this._sendDebugToGrafana(
|
|
1901
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
1902
1902
|
}, 5000 + retry * 1000);
|
|
1903
1903
|
});
|
|
1904
1904
|
}
|
|
@@ -2616,7 +2616,8 @@ class ExternalApp {
|
|
|
2616
2616
|
|
|
2617
2617
|
|
|
2618
2618
|
|
|
2619
|
-
|
|
2619
|
+
|
|
2620
|
+
|
|
2620
2621
|
|
|
2621
2622
|
|
|
2622
2623
|
class Meeting {
|
|
@@ -2628,6 +2629,7 @@ class Meeting {
|
|
|
2628
2629
|
|
|
2629
2630
|
|
|
2630
2631
|
|
|
2632
|
+
|
|
2631
2633
|
|
|
2632
2634
|
|
|
2633
2635
|
static parse(plain ) {
|
|
@@ -2639,6 +2641,7 @@ class Meeting {
|
|
|
2639
2641
|
port: plain.port,
|
|
2640
2642
|
uuid: plain.uuid,
|
|
2641
2643
|
number: plain.number,
|
|
2644
|
+
persistent: plain.persistent,
|
|
2642
2645
|
});
|
|
2643
2646
|
}
|
|
2644
2647
|
|
|
@@ -2646,7 +2649,7 @@ class Meeting {
|
|
|
2646
2649
|
return newFrom(meeting, Meeting);
|
|
2647
2650
|
}
|
|
2648
2651
|
|
|
2649
|
-
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
|
|
2652
|
+
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
|
|
2650
2653
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2651
2654
|
this.uri = uri;
|
|
2652
2655
|
this.name = name;
|
|
@@ -2654,6 +2657,7 @@ class Meeting {
|
|
|
2654
2657
|
this.port = port;
|
|
2655
2658
|
this.uuid = uuid;
|
|
2656
2659
|
this.number = number;
|
|
2660
|
+
this.persistent = persistent;
|
|
2657
2661
|
|
|
2658
2662
|
// Useful to compare instead of instanceof with minified code
|
|
2659
2663
|
this.type = 'Meeting';
|
|
@@ -2834,7 +2838,7 @@ class ChatMessage {
|
|
|
2834
2838
|
static parse(plain ) {
|
|
2835
2839
|
return new ChatMessage({
|
|
2836
2840
|
uuid: plain.uuid,
|
|
2837
|
-
date: moment__default[
|
|
2841
|
+
date: moment__default['default'](plain.created_at).toDate(),
|
|
2838
2842
|
content: plain.content,
|
|
2839
2843
|
alias: plain.alias,
|
|
2840
2844
|
userUuid: plain.user_uuid,
|
|
@@ -2926,7 +2930,7 @@ class Voicemail {
|
|
|
2926
2930
|
static parse(plain ) {
|
|
2927
2931
|
return new Voicemail({
|
|
2928
2932
|
id: plain.id,
|
|
2929
|
-
date: moment__default[
|
|
2933
|
+
date: moment__default['default'](plain.timestamp * 1000).toDate(),
|
|
2930
2934
|
duration: plain.duration * 1000,
|
|
2931
2935
|
caller: {
|
|
2932
2936
|
name: plain.caller_id_name,
|
|
@@ -3063,7 +3067,7 @@ class Call {
|
|
|
3063
3067
|
onHold: plain.on_hold,
|
|
3064
3068
|
status: plain.status,
|
|
3065
3069
|
lineId: plain.line_id,
|
|
3066
|
-
startingTime: moment__default[
|
|
3070
|
+
startingTime: moment__default['default'](plain.creation_time).toDate(),
|
|
3067
3071
|
talkingToIds: Object.keys(plain.talking_to || {}),
|
|
3068
3072
|
recording: plain.record_state === RECORD_STATE_ACTIVE,
|
|
3069
3073
|
});
|
|
@@ -3543,7 +3547,7 @@ class Emitter {
|
|
|
3543
3547
|
|
|
3544
3548
|
|
|
3545
3549
|
constructor() {
|
|
3546
|
-
this.eventEmitter = new EventEmitter__default[
|
|
3550
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
3547
3551
|
}
|
|
3548
3552
|
|
|
3549
3553
|
on(event , callback ) {
|
|
@@ -3588,7 +3592,7 @@ class Recording {
|
|
|
3588
3592
|
|
|
3589
3593
|
|
|
3590
3594
|
|
|
3591
|
-
static parseMany(recordings
|
|
3595
|
+
static parseMany(recordings = []) {
|
|
3592
3596
|
return recordings.map(item => Recording.parse(item));
|
|
3593
3597
|
}
|
|
3594
3598
|
|
|
@@ -3596,8 +3600,8 @@ class Recording {
|
|
|
3596
3600
|
return new Recording({
|
|
3597
3601
|
deleted: plain.deleted,
|
|
3598
3602
|
fileName: plain.filename,
|
|
3599
|
-
end: plain.end_time ? moment__default[
|
|
3600
|
-
start: moment__default[
|
|
3603
|
+
end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
|
|
3604
|
+
start: moment__default['default'](plain.start_time).toDate(),
|
|
3601
3605
|
uuid: plain.uuid,
|
|
3602
3606
|
});
|
|
3603
3607
|
}
|
|
@@ -3695,7 +3699,7 @@ class CallLog {
|
|
|
3695
3699
|
|
|
3696
3700
|
static parse(plain ) {
|
|
3697
3701
|
return new CallLog({
|
|
3698
|
-
answer: plain.answer ? moment__default[
|
|
3702
|
+
answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
|
|
3699
3703
|
answered: plain.answered,
|
|
3700
3704
|
callDirection: plain.call_direction,
|
|
3701
3705
|
destination: {
|
|
@@ -3712,9 +3716,9 @@ class CallLog {
|
|
|
3712
3716
|
},
|
|
3713
3717
|
id: plain.id,
|
|
3714
3718
|
duration: (plain.duration || 0) * 1000, // duration is in seconds
|
|
3715
|
-
start: moment__default[
|
|
3716
|
-
end: plain.end ? moment__default[
|
|
3717
|
-
recordings: Recording.parseMany(plain.recordings),
|
|
3719
|
+
start: moment__default['default'](plain.start).toDate(),
|
|
3720
|
+
end: plain.end ? moment__default['default'](plain.end).toDate() : null,
|
|
3721
|
+
recordings: Recording.parseMany(plain.recordings || []),
|
|
3718
3722
|
});
|
|
3719
3723
|
}
|
|
3720
3724
|
|
|
@@ -5624,7 +5628,7 @@ const parseCandidate$1 = (candidate ) => {
|
|
|
5624
5628
|
if (!candidate) {
|
|
5625
5629
|
return null;
|
|
5626
5630
|
}
|
|
5627
|
-
const result = sdpParser__default[
|
|
5631
|
+
const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
|
|
5628
5632
|
|
|
5629
5633
|
return result.candidates ? result.candidates[0] : null;
|
|
5630
5634
|
};
|
|
@@ -5638,7 +5642,7 @@ const areCandidateValid = (candidates ) =>
|
|
|
5638
5642
|
.length > 0;
|
|
5639
5643
|
|
|
5640
5644
|
const getVideoDirection = (sdp ) => {
|
|
5641
|
-
const parsedSdp = sdpParser__default[
|
|
5645
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5642
5646
|
const videoMedia = parsedSdp.media.find(media => media.type === 'video');
|
|
5643
5647
|
if (!videoMedia) {
|
|
5644
5648
|
return null;
|
|
@@ -5652,14 +5656,14 @@ const hasAnActiveVideo = (sdp ) => {
|
|
|
5652
5656
|
return false;
|
|
5653
5657
|
}
|
|
5654
5658
|
|
|
5655
|
-
const parsedSdp = sdpParser__default[
|
|
5659
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5656
5660
|
|
|
5657
5661
|
return !!parsedSdp.media.find(media =>
|
|
5658
5662
|
media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
|
|
5659
5663
|
};
|
|
5660
5664
|
|
|
5661
5665
|
const fixSdp = (sdp , candidates , forcePort = true) => {
|
|
5662
|
-
const parsedSdp = sdpParser__default[
|
|
5666
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5663
5667
|
const mainCandidate = getSrflxOrRelay(candidates)[0];
|
|
5664
5668
|
const ip = mainCandidate ? mainCandidate.ip : null;
|
|
5665
5669
|
|
|
@@ -5677,7 +5681,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5677
5681
|
};
|
|
5678
5682
|
});
|
|
5679
5683
|
|
|
5680
|
-
let fixed = sdpParser__default[
|
|
5684
|
+
let fixed = sdpParser__default['default'].write(parsedSdp);
|
|
5681
5685
|
|
|
5682
5686
|
if (ip) {
|
|
5683
5687
|
fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
|
|
@@ -5723,7 +5727,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
5723
5727
|
) {
|
|
5724
5728
|
super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
|
|
5725
5729
|
|
|
5726
|
-
this.eventEmitter = new EventEmitter__default[
|
|
5730
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
5727
5731
|
this.isWeb = isWeb;
|
|
5728
5732
|
this.session = session;
|
|
5729
5733
|
}
|
|
@@ -7040,7 +7044,7 @@ class WebRTCClient extends Emitter {
|
|
|
7040
7044
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
7041
7045
|
const transceivers = pc.getTransceivers();
|
|
7042
7046
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
7043
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
7047
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
7044
7048
|
|
|
7045
7049
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7046
7050
|
} else {
|
|
@@ -8245,7 +8249,7 @@ class WebRTCClient extends Emitter {
|
|
|
8245
8249
|
}
|
|
8246
8250
|
const sessionId = this.getSipSessionId(session);
|
|
8247
8251
|
|
|
8248
|
-
getStats__default[
|
|
8252
|
+
getStats__default['default'](pc, (result ) => {
|
|
8249
8253
|
const { results, internal, nomore, ...stats } = result;
|
|
8250
8254
|
this.statsIntervals[sessionId] = nomore;
|
|
8251
8255
|
|
|
@@ -10627,7 +10631,7 @@ class WebSocketClient extends Emitter {
|
|
|
10627
10631
|
|
|
10628
10632
|
connect() {
|
|
10629
10633
|
logger$6.info('connect method started', { host: this.host, token: this.token });
|
|
10630
|
-
this.socket = new ReconnectingWebSocket__default[
|
|
10634
|
+
this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
|
|
10631
10635
|
if (this.options.binaryType) {
|
|
10632
10636
|
this.socket.binaryType = this.options.binaryType;
|
|
10633
10637
|
}
|
|
@@ -11880,7 +11884,7 @@ class Room$1 extends Emitter {
|
|
|
11880
11884
|
}
|
|
11881
11885
|
|
|
11882
11886
|
_mapMsid(rawSdp ) {
|
|
11883
|
-
const sdp = sdpParser__default[
|
|
11887
|
+
const sdp = sdpParser__default['default'].parse(rawSdp);
|
|
11884
11888
|
const labelMsidArray = sdp.media.filter(media => !!media.label).map(({ label, msid }) => ({
|
|
11885
11889
|
label: String(label),
|
|
11886
11890
|
streamId: msid.split(' ')[0],
|
|
@@ -13639,4 +13643,4 @@ var Auth$1 = global.wazoAuthInstance;
|
|
|
13639
13643
|
|
|
13640
13644
|
exports.InvalidAuthorization = InvalidAuthorization;
|
|
13641
13645
|
exports.InvalidSubscription = InvalidSubscription;
|
|
13642
|
-
exports
|
|
13646
|
+
exports.default = Auth$1;
|
|
@@ -1719,7 +1719,7 @@ class IssueReporter {
|
|
|
1719
1719
|
args.splice(1, 1);
|
|
1720
1720
|
}
|
|
1721
1721
|
|
|
1722
|
-
const date = moment__default[
|
|
1722
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
1723
1723
|
const message = args.join(', ');
|
|
1724
1724
|
let consoleMessage = message;
|
|
1725
1725
|
|
|
@@ -1896,7 +1896,7 @@ class IssueReporter {
|
|
|
1896
1896
|
payload._retry = retry + 1;
|
|
1897
1897
|
}
|
|
1898
1898
|
|
|
1899
|
-
this._sendDebugToGrafana(
|
|
1899
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
1900
1900
|
}, 5000 + retry * 1000);
|
|
1901
1901
|
});
|
|
1902
1902
|
}
|
|
@@ -2614,7 +2614,8 @@ class ExternalApp {
|
|
|
2614
2614
|
|
|
2615
2615
|
|
|
2616
2616
|
|
|
2617
|
-
|
|
2617
|
+
|
|
2618
|
+
|
|
2618
2619
|
|
|
2619
2620
|
|
|
2620
2621
|
class Meeting {
|
|
@@ -2626,6 +2627,7 @@ class Meeting {
|
|
|
2626
2627
|
|
|
2627
2628
|
|
|
2628
2629
|
|
|
2630
|
+
|
|
2629
2631
|
|
|
2630
2632
|
|
|
2631
2633
|
static parse(plain ) {
|
|
@@ -2637,6 +2639,7 @@ class Meeting {
|
|
|
2637
2639
|
port: plain.port,
|
|
2638
2640
|
uuid: plain.uuid,
|
|
2639
2641
|
number: plain.number,
|
|
2642
|
+
persistent: plain.persistent,
|
|
2640
2643
|
});
|
|
2641
2644
|
}
|
|
2642
2645
|
|
|
@@ -2644,7 +2647,7 @@ class Meeting {
|
|
|
2644
2647
|
return newFrom(meeting, Meeting);
|
|
2645
2648
|
}
|
|
2646
2649
|
|
|
2647
|
-
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
|
|
2650
|
+
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
|
|
2648
2651
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2649
2652
|
this.uri = uri;
|
|
2650
2653
|
this.name = name;
|
|
@@ -2652,6 +2655,7 @@ class Meeting {
|
|
|
2652
2655
|
this.port = port;
|
|
2653
2656
|
this.uuid = uuid;
|
|
2654
2657
|
this.number = number;
|
|
2658
|
+
this.persistent = persistent;
|
|
2655
2659
|
|
|
2656
2660
|
// Useful to compare instead of instanceof with minified code
|
|
2657
2661
|
this.type = 'Meeting';
|
|
@@ -2832,7 +2836,7 @@ class ChatMessage {
|
|
|
2832
2836
|
static parse(plain ) {
|
|
2833
2837
|
return new ChatMessage({
|
|
2834
2838
|
uuid: plain.uuid,
|
|
2835
|
-
date: moment__default[
|
|
2839
|
+
date: moment__default['default'](plain.created_at).toDate(),
|
|
2836
2840
|
content: plain.content,
|
|
2837
2841
|
alias: plain.alias,
|
|
2838
2842
|
userUuid: plain.user_uuid,
|
|
@@ -2924,7 +2928,7 @@ class Voicemail {
|
|
|
2924
2928
|
static parse(plain ) {
|
|
2925
2929
|
return new Voicemail({
|
|
2926
2930
|
id: plain.id,
|
|
2927
|
-
date: moment__default[
|
|
2931
|
+
date: moment__default['default'](plain.timestamp * 1000).toDate(),
|
|
2928
2932
|
duration: plain.duration * 1000,
|
|
2929
2933
|
caller: {
|
|
2930
2934
|
name: plain.caller_id_name,
|
|
@@ -3061,7 +3065,7 @@ class Call {
|
|
|
3061
3065
|
onHold: plain.on_hold,
|
|
3062
3066
|
status: plain.status,
|
|
3063
3067
|
lineId: plain.line_id,
|
|
3064
|
-
startingTime: moment__default[
|
|
3068
|
+
startingTime: moment__default['default'](plain.creation_time).toDate(),
|
|
3065
3069
|
talkingToIds: Object.keys(plain.talking_to || {}),
|
|
3066
3070
|
recording: plain.record_state === RECORD_STATE_ACTIVE,
|
|
3067
3071
|
});
|
|
@@ -3541,7 +3545,7 @@ class Emitter {
|
|
|
3541
3545
|
|
|
3542
3546
|
|
|
3543
3547
|
constructor() {
|
|
3544
|
-
this.eventEmitter = new EventEmitter__default[
|
|
3548
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
3545
3549
|
}
|
|
3546
3550
|
|
|
3547
3551
|
on(event , callback ) {
|
|
@@ -3586,7 +3590,7 @@ class Recording {
|
|
|
3586
3590
|
|
|
3587
3591
|
|
|
3588
3592
|
|
|
3589
|
-
static parseMany(recordings
|
|
3593
|
+
static parseMany(recordings = []) {
|
|
3590
3594
|
return recordings.map(item => Recording.parse(item));
|
|
3591
3595
|
}
|
|
3592
3596
|
|
|
@@ -3594,8 +3598,8 @@ class Recording {
|
|
|
3594
3598
|
return new Recording({
|
|
3595
3599
|
deleted: plain.deleted,
|
|
3596
3600
|
fileName: plain.filename,
|
|
3597
|
-
end: plain.end_time ? moment__default[
|
|
3598
|
-
start: moment__default[
|
|
3601
|
+
end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
|
|
3602
|
+
start: moment__default['default'](plain.start_time).toDate(),
|
|
3599
3603
|
uuid: plain.uuid,
|
|
3600
3604
|
});
|
|
3601
3605
|
}
|
|
@@ -3693,7 +3697,7 @@ class CallLog {
|
|
|
3693
3697
|
|
|
3694
3698
|
static parse(plain ) {
|
|
3695
3699
|
return new CallLog({
|
|
3696
|
-
answer: plain.answer ? moment__default[
|
|
3700
|
+
answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
|
|
3697
3701
|
answered: plain.answered,
|
|
3698
3702
|
callDirection: plain.call_direction,
|
|
3699
3703
|
destination: {
|
|
@@ -3710,9 +3714,9 @@ class CallLog {
|
|
|
3710
3714
|
},
|
|
3711
3715
|
id: plain.id,
|
|
3712
3716
|
duration: (plain.duration || 0) * 1000, // duration is in seconds
|
|
3713
|
-
start: moment__default[
|
|
3714
|
-
end: plain.end ? moment__default[
|
|
3715
|
-
recordings: Recording.parseMany(plain.recordings),
|
|
3717
|
+
start: moment__default['default'](plain.start).toDate(),
|
|
3718
|
+
end: plain.end ? moment__default['default'](plain.end).toDate() : null,
|
|
3719
|
+
recordings: Recording.parseMany(plain.recordings || []),
|
|
3716
3720
|
});
|
|
3717
3721
|
}
|
|
3718
3722
|
|
|
@@ -5622,7 +5626,7 @@ const parseCandidate$1 = (candidate ) => {
|
|
|
5622
5626
|
if (!candidate) {
|
|
5623
5627
|
return null;
|
|
5624
5628
|
}
|
|
5625
|
-
const result = sdpParser__default[
|
|
5629
|
+
const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
|
|
5626
5630
|
|
|
5627
5631
|
return result.candidates ? result.candidates[0] : null;
|
|
5628
5632
|
};
|
|
@@ -5636,7 +5640,7 @@ const areCandidateValid = (candidates ) =>
|
|
|
5636
5640
|
.length > 0;
|
|
5637
5641
|
|
|
5638
5642
|
const getVideoDirection = (sdp ) => {
|
|
5639
|
-
const parsedSdp = sdpParser__default[
|
|
5643
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5640
5644
|
const videoMedia = parsedSdp.media.find(media => media.type === 'video');
|
|
5641
5645
|
if (!videoMedia) {
|
|
5642
5646
|
return null;
|
|
@@ -5650,14 +5654,14 @@ const hasAnActiveVideo = (sdp ) => {
|
|
|
5650
5654
|
return false;
|
|
5651
5655
|
}
|
|
5652
5656
|
|
|
5653
|
-
const parsedSdp = sdpParser__default[
|
|
5657
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5654
5658
|
|
|
5655
5659
|
return !!parsedSdp.media.find(media =>
|
|
5656
5660
|
media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
|
|
5657
5661
|
};
|
|
5658
5662
|
|
|
5659
5663
|
const fixSdp = (sdp , candidates , forcePort = true) => {
|
|
5660
|
-
const parsedSdp = sdpParser__default[
|
|
5664
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5661
5665
|
const mainCandidate = getSrflxOrRelay(candidates)[0];
|
|
5662
5666
|
const ip = mainCandidate ? mainCandidate.ip : null;
|
|
5663
5667
|
|
|
@@ -5675,7 +5679,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5675
5679
|
};
|
|
5676
5680
|
});
|
|
5677
5681
|
|
|
5678
|
-
let fixed = sdpParser__default[
|
|
5682
|
+
let fixed = sdpParser__default['default'].write(parsedSdp);
|
|
5679
5683
|
|
|
5680
5684
|
if (ip) {
|
|
5681
5685
|
fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
|
|
@@ -5721,7 +5725,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
5721
5725
|
) {
|
|
5722
5726
|
super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
|
|
5723
5727
|
|
|
5724
|
-
this.eventEmitter = new EventEmitter__default[
|
|
5728
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
5725
5729
|
this.isWeb = isWeb;
|
|
5726
5730
|
this.session = session;
|
|
5727
5731
|
}
|
|
@@ -7038,7 +7042,7 @@ class WebRTCClient extends Emitter {
|
|
|
7038
7042
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
7039
7043
|
const transceivers = pc.getTransceivers();
|
|
7040
7044
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
7041
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
7045
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
7042
7046
|
|
|
7043
7047
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7044
7048
|
} else {
|
|
@@ -8243,7 +8247,7 @@ class WebRTCClient extends Emitter {
|
|
|
8243
8247
|
}
|
|
8244
8248
|
const sessionId = this.getSipSessionId(session);
|
|
8245
8249
|
|
|
8246
|
-
getStats__default[
|
|
8250
|
+
getStats__default['default'](pc, (result ) => {
|
|
8247
8251
|
const { results, internal, nomore, ...stats } = result;
|
|
8248
8252
|
this.statsIntervals[sessionId] = nomore;
|
|
8249
8253
|
|
|
@@ -10625,7 +10629,7 @@ class WebSocketClient extends Emitter {
|
|
|
10625
10629
|
|
|
10626
10630
|
connect() {
|
|
10627
10631
|
logger$6.info('connect method started', { host: this.host, token: this.token });
|
|
10628
|
-
this.socket = new ReconnectingWebSocket__default[
|
|
10632
|
+
this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
|
|
10629
10633
|
if (this.options.binaryType) {
|
|
10630
10634
|
this.socket.binaryType = this.options.binaryType;
|
|
10631
10635
|
}
|
|
@@ -11878,7 +11882,7 @@ class Room$1 extends Emitter {
|
|
|
11878
11882
|
}
|
|
11879
11883
|
|
|
11880
11884
|
_mapMsid(rawSdp ) {
|
|
11881
|
-
const sdp = sdpParser__default[
|
|
11885
|
+
const sdp = sdpParser__default['default'].parse(rawSdp);
|
|
11882
11886
|
const labelMsidArray = sdp.media.filter(media => !!media.label).map(({ label, msid }) => ({
|
|
11883
11887
|
label: String(label),
|
|
11884
11888
|
streamId: msid.split(' ')[0],
|
package/lib/simple/Directory.js
CHANGED
|
@@ -211,7 +211,7 @@ class IssueReporter {
|
|
|
211
211
|
args.splice(1, 1);
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
const date = moment__default[
|
|
214
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
215
215
|
const message = args.join(', ');
|
|
216
216
|
let consoleMessage = message;
|
|
217
217
|
|
|
@@ -388,7 +388,7 @@ class IssueReporter {
|
|
|
388
388
|
payload._retry = retry + 1;
|
|
389
389
|
}
|
|
390
390
|
|
|
391
|
-
this._sendDebugToGrafana(
|
|
391
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
392
392
|
}, 5000 + retry * 1000);
|
|
393
393
|
});
|
|
394
394
|
}
|
|
@@ -2591,7 +2591,8 @@ class ExternalApp {
|
|
|
2591
2591
|
|
|
2592
2592
|
|
|
2593
2593
|
|
|
2594
|
-
|
|
2594
|
+
|
|
2595
|
+
|
|
2595
2596
|
|
|
2596
2597
|
|
|
2597
2598
|
class Meeting {
|
|
@@ -2603,6 +2604,7 @@ class Meeting {
|
|
|
2603
2604
|
|
|
2604
2605
|
|
|
2605
2606
|
|
|
2607
|
+
|
|
2606
2608
|
|
|
2607
2609
|
|
|
2608
2610
|
static parse(plain ) {
|
|
@@ -2614,6 +2616,7 @@ class Meeting {
|
|
|
2614
2616
|
port: plain.port,
|
|
2615
2617
|
uuid: plain.uuid,
|
|
2616
2618
|
number: plain.number,
|
|
2619
|
+
persistent: plain.persistent,
|
|
2617
2620
|
});
|
|
2618
2621
|
}
|
|
2619
2622
|
|
|
@@ -2621,7 +2624,7 @@ class Meeting {
|
|
|
2621
2624
|
return newFrom(meeting, Meeting);
|
|
2622
2625
|
}
|
|
2623
2626
|
|
|
2624
|
-
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
|
|
2627
|
+
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
|
|
2625
2628
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2626
2629
|
this.uri = uri;
|
|
2627
2630
|
this.name = name;
|
|
@@ -2629,6 +2632,7 @@ class Meeting {
|
|
|
2629
2632
|
this.port = port;
|
|
2630
2633
|
this.uuid = uuid;
|
|
2631
2634
|
this.number = number;
|
|
2635
|
+
this.persistent = persistent;
|
|
2632
2636
|
|
|
2633
2637
|
// Useful to compare instead of instanceof with minified code
|
|
2634
2638
|
this.type = 'Meeting';
|
|
@@ -2809,7 +2813,7 @@ class ChatMessage {
|
|
|
2809
2813
|
static parse(plain ) {
|
|
2810
2814
|
return new ChatMessage({
|
|
2811
2815
|
uuid: plain.uuid,
|
|
2812
|
-
date: moment__default[
|
|
2816
|
+
date: moment__default['default'](plain.created_at).toDate(),
|
|
2813
2817
|
content: plain.content,
|
|
2814
2818
|
alias: plain.alias,
|
|
2815
2819
|
userUuid: plain.user_uuid,
|
|
@@ -2901,7 +2905,7 @@ class Voicemail {
|
|
|
2901
2905
|
static parse(plain ) {
|
|
2902
2906
|
return new Voicemail({
|
|
2903
2907
|
id: plain.id,
|
|
2904
|
-
date: moment__default[
|
|
2908
|
+
date: moment__default['default'](plain.timestamp * 1000).toDate(),
|
|
2905
2909
|
duration: plain.duration * 1000,
|
|
2906
2910
|
caller: {
|
|
2907
2911
|
name: plain.caller_id_name,
|
|
@@ -3038,7 +3042,7 @@ class Call {
|
|
|
3038
3042
|
onHold: plain.on_hold,
|
|
3039
3043
|
status: plain.status,
|
|
3040
3044
|
lineId: plain.line_id,
|
|
3041
|
-
startingTime: moment__default[
|
|
3045
|
+
startingTime: moment__default['default'](plain.creation_time).toDate(),
|
|
3042
3046
|
talkingToIds: Object.keys(plain.talking_to || {}),
|
|
3043
3047
|
recording: plain.record_state === RECORD_STATE_ACTIVE,
|
|
3044
3048
|
});
|
|
@@ -3192,7 +3196,7 @@ class Recording {
|
|
|
3192
3196
|
|
|
3193
3197
|
|
|
3194
3198
|
|
|
3195
|
-
static parseMany(recordings
|
|
3199
|
+
static parseMany(recordings = []) {
|
|
3196
3200
|
return recordings.map(item => Recording.parse(item));
|
|
3197
3201
|
}
|
|
3198
3202
|
|
|
@@ -3200,8 +3204,8 @@ class Recording {
|
|
|
3200
3204
|
return new Recording({
|
|
3201
3205
|
deleted: plain.deleted,
|
|
3202
3206
|
fileName: plain.filename,
|
|
3203
|
-
end: plain.end_time ? moment__default[
|
|
3204
|
-
start: moment__default[
|
|
3207
|
+
end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
|
|
3208
|
+
start: moment__default['default'](plain.start_time).toDate(),
|
|
3205
3209
|
uuid: plain.uuid,
|
|
3206
3210
|
});
|
|
3207
3211
|
}
|
|
@@ -3299,7 +3303,7 @@ class CallLog {
|
|
|
3299
3303
|
|
|
3300
3304
|
static parse(plain ) {
|
|
3301
3305
|
return new CallLog({
|
|
3302
|
-
answer: plain.answer ? moment__default[
|
|
3306
|
+
answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
|
|
3303
3307
|
answered: plain.answered,
|
|
3304
3308
|
callDirection: plain.call_direction,
|
|
3305
3309
|
destination: {
|
|
@@ -3316,9 +3320,9 @@ class CallLog {
|
|
|
3316
3320
|
},
|
|
3317
3321
|
id: plain.id,
|
|
3318
3322
|
duration: (plain.duration || 0) * 1000, // duration is in seconds
|
|
3319
|
-
start: moment__default[
|
|
3320
|
-
end: plain.end ? moment__default[
|
|
3321
|
-
recordings: Recording.parseMany(plain.recordings),
|
|
3323
|
+
start: moment__default['default'](plain.start).toDate(),
|
|
3324
|
+
end: plain.end ? moment__default['default'](plain.end).toDate() : null,
|
|
3325
|
+
recordings: Recording.parseMany(plain.recordings || []),
|
|
3322
3326
|
});
|
|
3323
3327
|
}
|
|
3324
3328
|
|