@wazo/sdk 0.37.18 → 0.37.22
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 +52 -9
- package/esm/__tests__/web-rtc-client.test.js +80 -20
- package/esm/api/agentd.js +27 -4
- package/esm/api/amid.js +27 -4
- package/esm/api/application.js +27 -4
- package/esm/api/auth.js +29 -5
- package/esm/api/call-logd.js +29 -6
- package/esm/api/calld.js +27 -4
- package/esm/api/chatd.js +27 -4
- package/esm/api/confd.js +51 -8
- package/esm/api/ctid-ng.js +27 -4
- package/esm/api/dird.js +27 -4
- package/esm/api/webhookd.js +27 -4
- package/esm/api-client.js +54 -11
- package/esm/checker/Checker.js +83 -21
- package/esm/checker/checks/aor.js +54 -11
- package/esm/checker/checks/api.js +54 -11
- package/esm/checker/checks/ice-ipv4.js +1 -1
- package/esm/checker/checks/index.js +84 -22
- package/esm/checker/checks/symmetric-nat.js +1 -1
- package/esm/checker/checks/wazo-websocket.js +29 -4
- package/esm/checker/checks/webrtc-transport.js +82 -22
- package/esm/checker/checks/webrtc.js +82 -22
- package/esm/domain/AdHocAPIConference.js +54 -11
- 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 +54 -10
- 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 +20 -3
- package/esm/domain/NotificationOptions.js +1 -1
- package/esm/domain/Phone/CTIPhone.js +55 -11
- package/esm/domain/Phone/WebRTCPhone.js +39 -6
- 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 +101 -24
- package/esm/lib/WazoSessionDescriptionHandler.js +28 -4
- package/esm/service/CallApi.js +54 -11
- package/esm/service/IssueReporter.js +27 -4
- package/esm/service/__tests__/IssueReporter.test.js +26 -3
- package/esm/service/getApiClient.js +55 -11
- package/esm/simple/Auth.js +101 -23
- package/esm/simple/Configuration.js +100 -23
- package/esm/simple/Directory.js +53 -10
- package/esm/simple/Phone.js +100 -23
- package/esm/simple/Websocket.js +30 -4
- package/esm/simple/index.js +100 -23
- package/esm/simple/room/LocalParticipant.js +113 -40
- package/esm/simple/room/Participant.js +112 -37
- package/esm/simple/room/RemoteParticipant.js +114 -41
- package/esm/simple/room/Room.js +113 -37
- package/esm/simple/room/SipRoom.js +101 -26
- package/esm/simple/room/Stream.js +101 -26
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +99 -22
- package/esm/simple/utils.js +99 -22
- package/esm/utils/Emitter.js +1 -1
- package/esm/utils/Heartbeat.js +1 -1
- package/esm/utils/__tests__/api-requester.test.js +26 -3
- package/esm/utils/api-requester.js +28 -4
- 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 +83 -22
- package/esm/websocket-client.js +30 -4
- package/lib/__tests__/api-client.test.js +61 -18
- package/lib/__tests__/web-rtc-client.test.js +97 -37
- package/lib/api/agentd.js +27 -4
- package/lib/api/amid.js +27 -4
- package/lib/api/application.js +27 -4
- package/lib/api/auth.js +28 -5
- package/lib/api/call-logd.js +34 -11
- package/lib/api/calld.js +30 -7
- package/lib/api/chatd.js +28 -5
- package/lib/api/confd.js +51 -8
- package/lib/api/ctid-ng.js +30 -7
- package/lib/api/dird.js +27 -4
- package/lib/api/webhookd.js +27 -4
- package/lib/api-client.js +61 -18
- package/lib/checker/Checker.js +100 -38
- package/lib/checker/checks/aor.js +61 -18
- package/lib/checker/checks/api.js +61 -18
- package/lib/checker/checks/index.js +100 -38
- package/lib/checker/checks/wazo-websocket.js +31 -6
- package/lib/checker/checks/webrtc-transport.js +97 -37
- package/lib/checker/checks/webrtc.js +97 -37
- package/lib/domain/AdHocAPIConference.js +61 -18
- 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 +62 -19
- package/lib/domain/ForwardOption.js +1 -1
- package/lib/domain/Meeting.js +19 -2
- package/lib/domain/Phone/CTIPhone.js +63 -20
- package/lib/domain/Phone/WebRTCPhone.js +40 -8
- 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 +120 -43
- package/lib/lib/WazoSessionDescriptionHandler.js +32 -9
- package/lib/service/CallApi.js +61 -18
- package/lib/service/IssueReporter.js +27 -4
- package/lib/service/__tests__/IssueReporter.test.js +27 -4
- package/lib/service/getApiClient.js +62 -19
- package/lib/simple/Auth.js +119 -42
- package/lib/simple/Configuration.js +118 -41
- package/lib/simple/Directory.js +61 -18
- package/lib/simple/Phone.js +118 -41
- package/lib/simple/Websocket.js +32 -6
- package/lib/simple/index.js +118 -41
- package/lib/simple/room/LocalParticipant.js +132 -59
- package/lib/simple/room/Participant.js +130 -55
- package/lib/simple/room/RemoteParticipant.js +133 -60
- package/lib/simple/room/Room.js +131 -56
- package/lib/simple/room/SipRoom.js +120 -45
- package/lib/simple/room/Stream.js +120 -45
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +118 -41
- package/lib/simple/utils.js +118 -41
- 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 +27 -4
- package/lib/utils/__tests__/sdp.test.js +12 -12
- package/lib/utils/api-requester.js +28 -5
- package/lib/utils/sdp.js +10 -10
- package/lib/web-rtc-client.js +98 -38
- package/lib/websocket-client.js +33 -7
- package/package.json +2 -2
- package/src/api/confd.js +5 -2
- package/src/domain/CallLog.js +1 -1
- package/src/domain/Meeting.js +19 -2
- package/src/domain/Phone/WebRTCPhone.js +11 -2
- package/src/domain/Recording.js +1 -1
- package/src/service/IssueReporter.js +26 -3
- package/src/simple/Phone.js +5 -0
- package/src/types/WebSocketMessage.js +5 -1
- package/src/web-rtc-client.js +28 -11
- package/src/websocket-client.js +2 -0
package/lib/simple/Auth.js
CHANGED
|
@@ -1646,6 +1646,7 @@ class IssueReporter {
|
|
|
1646
1646
|
|
|
1647
1647
|
|
|
1648
1648
|
|
|
1649
|
+
|
|
1649
1650
|
|
|
1650
1651
|
constructor() {
|
|
1651
1652
|
addLevelsTo(this);
|
|
@@ -1657,12 +1658,17 @@ class IssueReporter {
|
|
|
1657
1658
|
this.bufferTimeout = null;
|
|
1658
1659
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
1659
1660
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
1661
|
+
this._callback = null;
|
|
1660
1662
|
}
|
|
1661
1663
|
|
|
1662
1664
|
init() {
|
|
1663
1665
|
this._catchConsole();
|
|
1664
1666
|
}
|
|
1665
1667
|
|
|
1668
|
+
setCallback(cb ) {
|
|
1669
|
+
this._callback = cb;
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1666
1672
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
1667
1673
|
this.remoteClientConfiguration = configuration;
|
|
1668
1674
|
}
|
|
@@ -1698,6 +1704,7 @@ class IssueReporter {
|
|
|
1698
1704
|
|
|
1699
1705
|
// Handle category label
|
|
1700
1706
|
let category = null;
|
|
1707
|
+
let skipSendToRemote = false;
|
|
1701
1708
|
let extra = {};
|
|
1702
1709
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
1703
1710
|
category = args[0].split('=')[1];
|
|
@@ -1713,6 +1720,7 @@ class IssueReporter {
|
|
|
1713
1720
|
errorMessage: lastArg.message,
|
|
1714
1721
|
errorStack: lastArg.stack,
|
|
1715
1722
|
errorType: lastArg.constructor.name,
|
|
1723
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
1716
1724
|
};
|
|
1717
1725
|
} else {
|
|
1718
1726
|
extra = lastArg;
|
|
@@ -1721,7 +1729,12 @@ class IssueReporter {
|
|
|
1721
1729
|
args.splice(1, 1);
|
|
1722
1730
|
}
|
|
1723
1731
|
|
|
1724
|
-
|
|
1732
|
+
if (extra.skipSendToRemote) {
|
|
1733
|
+
skipSendToRemote = true;
|
|
1734
|
+
delete extra.skipSendToRemote;
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1737
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
1725
1738
|
const message = args.join(', ');
|
|
1726
1739
|
let consoleMessage = message;
|
|
1727
1740
|
|
|
@@ -1741,7 +1754,13 @@ class IssueReporter {
|
|
|
1741
1754
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
1742
1755
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
1743
1756
|
|
|
1744
|
-
this.
|
|
1757
|
+
if (this._callback) {
|
|
1758
|
+
this._callback(level, consoleMessage);
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1761
|
+
if (!skipSendToRemote) {
|
|
1762
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
1763
|
+
}
|
|
1745
1764
|
}
|
|
1746
1765
|
|
|
1747
1766
|
logRequest(url , options , response , start ) {
|
|
@@ -1886,7 +1905,11 @@ class IssueReporter {
|
|
|
1886
1905
|
},
|
|
1887
1906
|
// $FlowFixMe
|
|
1888
1907
|
body,
|
|
1889
|
-
}).catch(() => {
|
|
1908
|
+
}).catch((e ) => {
|
|
1909
|
+
// $FlowFixMe
|
|
1910
|
+
e.skipSendToRemote = true;
|
|
1911
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
1912
|
+
|
|
1890
1913
|
setTimeout(() => {
|
|
1891
1914
|
if (isArray) {
|
|
1892
1915
|
payload = payload.map(message => {
|
|
@@ -1898,7 +1921,7 @@ class IssueReporter {
|
|
|
1898
1921
|
payload._retry = retry + 1;
|
|
1899
1922
|
}
|
|
1900
1923
|
|
|
1901
|
-
this._sendDebugToGrafana(
|
|
1924
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
1902
1925
|
}, 5000 + retry * 1000);
|
|
1903
1926
|
});
|
|
1904
1927
|
}
|
|
@@ -2616,7 +2639,8 @@ class ExternalApp {
|
|
|
2616
2639
|
|
|
2617
2640
|
|
|
2618
2641
|
|
|
2619
|
-
|
|
2642
|
+
|
|
2643
|
+
|
|
2620
2644
|
|
|
2621
2645
|
|
|
2622
2646
|
class Meeting {
|
|
@@ -2628,6 +2652,7 @@ class Meeting {
|
|
|
2628
2652
|
|
|
2629
2653
|
|
|
2630
2654
|
|
|
2655
|
+
|
|
2631
2656
|
|
|
2632
2657
|
|
|
2633
2658
|
static parse(plain ) {
|
|
@@ -2639,14 +2664,28 @@ class Meeting {
|
|
|
2639
2664
|
port: plain.port,
|
|
2640
2665
|
uuid: plain.uuid,
|
|
2641
2666
|
number: plain.number,
|
|
2667
|
+
persistent: plain.persistent,
|
|
2642
2668
|
});
|
|
2643
2669
|
}
|
|
2644
2670
|
|
|
2671
|
+
static parseMany(items ) {
|
|
2672
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2673
|
+
}
|
|
2674
|
+
|
|
2645
2675
|
static newFrom(meeting ) {
|
|
2646
2676
|
return newFrom(meeting, Meeting);
|
|
2647
2677
|
}
|
|
2648
2678
|
|
|
2649
|
-
constructor({
|
|
2679
|
+
constructor({
|
|
2680
|
+
uuid,
|
|
2681
|
+
name,
|
|
2682
|
+
guestSipAuthorization,
|
|
2683
|
+
ownerUuids,
|
|
2684
|
+
port,
|
|
2685
|
+
uri,
|
|
2686
|
+
number,
|
|
2687
|
+
persistent,
|
|
2688
|
+
} = {}) {
|
|
2650
2689
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2651
2690
|
this.uri = uri;
|
|
2652
2691
|
this.name = name;
|
|
@@ -2654,6 +2693,7 @@ class Meeting {
|
|
|
2654
2693
|
this.port = port;
|
|
2655
2694
|
this.uuid = uuid;
|
|
2656
2695
|
this.number = number;
|
|
2696
|
+
this.persistent = persistent;
|
|
2657
2697
|
|
|
2658
2698
|
// Useful to compare instead of instanceof with minified code
|
|
2659
2699
|
this.type = 'Meeting';
|
|
@@ -2731,8 +2771,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2731
2771
|
}
|
|
2732
2772
|
},
|
|
2733
2773
|
|
|
2734
|
-
|
|
2735
|
-
client.
|
|
2774
|
+
getMyMeetings: () =>
|
|
2775
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2776
|
+
|
|
2777
|
+
createMyMeeting: (name , persistent ) =>
|
|
2778
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2736
2779
|
|
|
2737
2780
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2738
2781
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2834,7 +2877,7 @@ class ChatMessage {
|
|
|
2834
2877
|
static parse(plain ) {
|
|
2835
2878
|
return new ChatMessage({
|
|
2836
2879
|
uuid: plain.uuid,
|
|
2837
|
-
date: moment__default[
|
|
2880
|
+
date: moment__default['default'](plain.created_at).toDate(),
|
|
2838
2881
|
content: plain.content,
|
|
2839
2882
|
alias: plain.alias,
|
|
2840
2883
|
userUuid: plain.user_uuid,
|
|
@@ -2926,7 +2969,7 @@ class Voicemail {
|
|
|
2926
2969
|
static parse(plain ) {
|
|
2927
2970
|
return new Voicemail({
|
|
2928
2971
|
id: plain.id,
|
|
2929
|
-
date: moment__default[
|
|
2972
|
+
date: moment__default['default'](plain.timestamp * 1000).toDate(),
|
|
2930
2973
|
duration: plain.duration * 1000,
|
|
2931
2974
|
caller: {
|
|
2932
2975
|
name: plain.caller_id_name,
|
|
@@ -3063,7 +3106,7 @@ class Call {
|
|
|
3063
3106
|
onHold: plain.on_hold,
|
|
3064
3107
|
status: plain.status,
|
|
3065
3108
|
lineId: plain.line_id,
|
|
3066
|
-
startingTime: moment__default[
|
|
3109
|
+
startingTime: moment__default['default'](plain.creation_time).toDate(),
|
|
3067
3110
|
talkingToIds: Object.keys(plain.talking_to || {}),
|
|
3068
3111
|
recording: plain.record_state === RECORD_STATE_ACTIVE,
|
|
3069
3112
|
});
|
|
@@ -3543,7 +3586,7 @@ class Emitter {
|
|
|
3543
3586
|
|
|
3544
3587
|
|
|
3545
3588
|
constructor() {
|
|
3546
|
-
this.eventEmitter = new EventEmitter__default[
|
|
3589
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
3547
3590
|
}
|
|
3548
3591
|
|
|
3549
3592
|
on(event , callback ) {
|
|
@@ -3588,7 +3631,7 @@ class Recording {
|
|
|
3588
3631
|
|
|
3589
3632
|
|
|
3590
3633
|
|
|
3591
|
-
static parseMany(recordings
|
|
3634
|
+
static parseMany(recordings = []) {
|
|
3592
3635
|
return recordings.map(item => Recording.parse(item));
|
|
3593
3636
|
}
|
|
3594
3637
|
|
|
@@ -3596,8 +3639,8 @@ class Recording {
|
|
|
3596
3639
|
return new Recording({
|
|
3597
3640
|
deleted: plain.deleted,
|
|
3598
3641
|
fileName: plain.filename,
|
|
3599
|
-
end: plain.end_time ? moment__default[
|
|
3600
|
-
start: moment__default[
|
|
3642
|
+
end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
|
|
3643
|
+
start: moment__default['default'](plain.start_time).toDate(),
|
|
3601
3644
|
uuid: plain.uuid,
|
|
3602
3645
|
});
|
|
3603
3646
|
}
|
|
@@ -3695,7 +3738,7 @@ class CallLog {
|
|
|
3695
3738
|
|
|
3696
3739
|
static parse(plain ) {
|
|
3697
3740
|
return new CallLog({
|
|
3698
|
-
answer: plain.answer ? moment__default[
|
|
3741
|
+
answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
|
|
3699
3742
|
answered: plain.answered,
|
|
3700
3743
|
callDirection: plain.call_direction,
|
|
3701
3744
|
destination: {
|
|
@@ -3712,9 +3755,9 @@ class CallLog {
|
|
|
3712
3755
|
},
|
|
3713
3756
|
id: plain.id,
|
|
3714
3757
|
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),
|
|
3758
|
+
start: moment__default['default'](plain.start).toDate(),
|
|
3759
|
+
end: plain.end ? moment__default['default'](plain.end).toDate() : null,
|
|
3760
|
+
recordings: Recording.parseMany(plain.recordings || []),
|
|
3718
3761
|
});
|
|
3719
3762
|
}
|
|
3720
3763
|
|
|
@@ -5624,7 +5667,7 @@ const parseCandidate$1 = (candidate ) => {
|
|
|
5624
5667
|
if (!candidate) {
|
|
5625
5668
|
return null;
|
|
5626
5669
|
}
|
|
5627
|
-
const result = sdpParser__default[
|
|
5670
|
+
const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
|
|
5628
5671
|
|
|
5629
5672
|
return result.candidates ? result.candidates[0] : null;
|
|
5630
5673
|
};
|
|
@@ -5638,7 +5681,7 @@ const areCandidateValid = (candidates ) =>
|
|
|
5638
5681
|
.length > 0;
|
|
5639
5682
|
|
|
5640
5683
|
const getVideoDirection = (sdp ) => {
|
|
5641
|
-
const parsedSdp = sdpParser__default[
|
|
5684
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5642
5685
|
const videoMedia = parsedSdp.media.find(media => media.type === 'video');
|
|
5643
5686
|
if (!videoMedia) {
|
|
5644
5687
|
return null;
|
|
@@ -5652,14 +5695,14 @@ const hasAnActiveVideo = (sdp ) => {
|
|
|
5652
5695
|
return false;
|
|
5653
5696
|
}
|
|
5654
5697
|
|
|
5655
|
-
const parsedSdp = sdpParser__default[
|
|
5698
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5656
5699
|
|
|
5657
5700
|
return !!parsedSdp.media.find(media =>
|
|
5658
5701
|
media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
|
|
5659
5702
|
};
|
|
5660
5703
|
|
|
5661
5704
|
const fixSdp = (sdp , candidates , forcePort = true) => {
|
|
5662
|
-
const parsedSdp = sdpParser__default[
|
|
5705
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5663
5706
|
const mainCandidate = getSrflxOrRelay(candidates)[0];
|
|
5664
5707
|
const ip = mainCandidate ? mainCandidate.ip : null;
|
|
5665
5708
|
|
|
@@ -5677,7 +5720,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5677
5720
|
};
|
|
5678
5721
|
});
|
|
5679
5722
|
|
|
5680
|
-
let fixed = sdpParser__default[
|
|
5723
|
+
let fixed = sdpParser__default['default'].write(parsedSdp);
|
|
5681
5724
|
|
|
5682
5725
|
if (ip) {
|
|
5683
5726
|
fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
|
|
@@ -5723,7 +5766,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
5723
5766
|
) {
|
|
5724
5767
|
super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
|
|
5725
5768
|
|
|
5726
|
-
this.eventEmitter = new EventEmitter__default[
|
|
5769
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
5727
5770
|
this.isWeb = isWeb;
|
|
5728
5771
|
this.session = session;
|
|
5729
5772
|
}
|
|
@@ -6704,7 +6747,9 @@ class WebRTCClient extends Emitter {
|
|
|
6704
6747
|
const inviteOptions = {
|
|
6705
6748
|
requestDelegate: {
|
|
6706
6749
|
onAccept: (response ) => {
|
|
6707
|
-
session.sessionDescriptionHandler.peerConnection
|
|
6750
|
+
if (session.sessionDescriptionHandler.peerConnection) {
|
|
6751
|
+
session.sessionDescriptionHandler.peerConnection.sfu = conference;
|
|
6752
|
+
}
|
|
6708
6753
|
this._onAccepted(session, response.session, true);
|
|
6709
6754
|
},
|
|
6710
6755
|
onReject: (response ) => {
|
|
@@ -7040,7 +7085,7 @@ class WebRTCClient extends Emitter {
|
|
|
7040
7085
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
7041
7086
|
const transceivers = pc.getTransceivers();
|
|
7042
7087
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
7043
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
7088
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
7044
7089
|
|
|
7045
7090
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7046
7091
|
} else {
|
|
@@ -7576,6 +7621,16 @@ class WebRTCClient extends Emitter {
|
|
|
7576
7621
|
return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
|
|
7577
7622
|
}
|
|
7578
7623
|
|
|
7624
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
7625
|
+
getRemoteVideoStreamFromPc(sessionId ) {
|
|
7626
|
+
const pc = this.getPeerConnection(sessionId);
|
|
7627
|
+
if (!pc) {
|
|
7628
|
+
return null;
|
|
7629
|
+
}
|
|
7630
|
+
|
|
7631
|
+
return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
|
|
7632
|
+
}
|
|
7633
|
+
|
|
7579
7634
|
hasVideo(sessionId ) {
|
|
7580
7635
|
return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
|
|
7581
7636
|
}
|
|
@@ -8086,6 +8141,7 @@ class WebRTCClient extends Emitter {
|
|
|
8086
8141
|
session.sessionDescriptionHandler.remoteMediaStream.onaddtrack = onTrack;
|
|
8087
8142
|
|
|
8088
8143
|
pc.oniceconnectionstatechange = () => {
|
|
8144
|
+
logger$9.info('on ice connection state changed', { state: pc.iceConnectionState });
|
|
8089
8145
|
if (pc.iceConnectionState === 'disconnected') {
|
|
8090
8146
|
this.eventEmitter.emit(ON_DISCONNECTED$1);
|
|
8091
8147
|
}
|
|
@@ -8245,7 +8301,7 @@ class WebRTCClient extends Emitter {
|
|
|
8245
8301
|
}
|
|
8246
8302
|
const sessionId = this.getSipSessionId(session);
|
|
8247
8303
|
|
|
8248
|
-
getStats__default[
|
|
8304
|
+
getStats__default['default'](pc, (result ) => {
|
|
8249
8305
|
const { results, internal, nomore, ...stats } = result;
|
|
8250
8306
|
this.statsIntervals[sessionId] = nomore;
|
|
8251
8307
|
|
|
@@ -8354,18 +8410,22 @@ class WebRTCClient extends Emitter {
|
|
|
8354
8410
|
});
|
|
8355
8411
|
|
|
8356
8412
|
networkStats.packetsLost = packetsLost;
|
|
8357
|
-
networkStats.
|
|
8413
|
+
networkStats.totalAudioBytesSent = audioBytesSent;
|
|
8414
|
+
networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
|
|
8415
|
+
networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
|
|
8358
8416
|
networkStats.audioBytesReceived = audioBytesReceived;
|
|
8359
|
-
networkStats.
|
|
8360
|
-
networkStats.
|
|
8417
|
+
networkStats.totalVideoBytesSent = videoBytesSent;
|
|
8418
|
+
networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
|
|
8419
|
+
networkStats.totalVideoBytesReceived = videoBytesReceived;
|
|
8420
|
+
networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
|
|
8421
|
+
networkStats.totalTransportSent = transportSent - lastTransportSent;
|
|
8361
8422
|
networkStats.transportSent = transportSent;
|
|
8362
|
-
networkStats.
|
|
8363
|
-
|
|
8364
|
-
const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
|
|
8365
|
-
+ (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
|
|
8366
|
-
+ (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
|
|
8423
|
+
networkStats.totalTransportReceived = transportReceived;
|
|
8424
|
+
networkStats.transportReceived = transportReceived - lastTransportReceived;
|
|
8367
8425
|
|
|
8368
|
-
networkStats.bandwidth =
|
|
8426
|
+
networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
|
|
8427
|
+
+ networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
|
|
8428
|
+
+ networkStats.transportSent;
|
|
8369
8429
|
|
|
8370
8430
|
this.eventEmitter.emit(ON_NETWORK_STATS$1, session, networkStats, this.sessionNetworkStats[sessionId]);
|
|
8371
8431
|
this.sessionNetworkStats[sessionId].push(networkStats);
|
|
@@ -8747,7 +8807,10 @@ class WebRTCPhone extends Emitter {
|
|
|
8747
8807
|
|
|
8748
8808
|
onCancel(message);
|
|
8749
8809
|
const elsewhere = message.data.indexOf('cause=26') !== -1 && message.data.indexOf('completed elsewhere') !== -1;
|
|
8750
|
-
|
|
8810
|
+
const callSession = this._createCallSession(sipSession);
|
|
8811
|
+
delete this.callSessions[callSession.getId()];
|
|
8812
|
+
|
|
8813
|
+
this.eventEmitter.emit(ON_CALL_CANCELED, callSession, elsewhere);
|
|
8751
8814
|
};
|
|
8752
8815
|
} else if (sipSession instanceof invitation.Invitation) {
|
|
8753
8816
|
console.warn('sipSession._onCancel not found, please update the wazo SDK accordingly');
|
|
@@ -8776,9 +8839,11 @@ class WebRTCPhone extends Emitter {
|
|
|
8776
8839
|
case sessionState.SessionState.Terminated: {
|
|
8777
8840
|
logger$8.info('WebRTC phone - call terminated', { sipId: sipSession.id });
|
|
8778
8841
|
|
|
8842
|
+
// Should be called before `_onCallTerminated` or the callCount will not decrement...
|
|
8843
|
+
const callSession = this._createCallSession(sipSession);
|
|
8779
8844
|
const wasCurrentSession = this._onCallTerminated(sipSession);
|
|
8780
8845
|
|
|
8781
|
-
return this.eventEmitter.emit(ON_CALL_ENDED,
|
|
8846
|
+
return this.eventEmitter.emit(ON_CALL_ENDED, callSession, wasCurrentSession);
|
|
8782
8847
|
}
|
|
8783
8848
|
}
|
|
8784
8849
|
});
|
|
@@ -9726,6 +9791,10 @@ class WebRTCPhone extends Emitter {
|
|
|
9726
9791
|
return callSession ? this.client.getRemoteVideoStream(callSession.sipCallId) : null;
|
|
9727
9792
|
}
|
|
9728
9793
|
|
|
9794
|
+
getRemoteVideoStreamFromPc(callSession ) {
|
|
9795
|
+
return callSession ? this.client.getRemoteVideoStreamFromPc(callSession.sipCallId) : null;
|
|
9796
|
+
}
|
|
9797
|
+
|
|
9729
9798
|
hasRemoteVideo(callSession ) {
|
|
9730
9799
|
return callSession ? this.client.hasRemoteVideo(callSession.sipCallId) : false;
|
|
9731
9800
|
}
|
|
@@ -10409,6 +10478,11 @@ class Phone extends Emitter {
|
|
|
10409
10478
|
return this.getRemoteVideoStream(callSession);
|
|
10410
10479
|
}
|
|
10411
10480
|
|
|
10481
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
10482
|
+
getRemoteVideoStreamFromPc(callSession ) {
|
|
10483
|
+
return this.phone ? this.phone.getRemoteVideoStreamFromPc(callSession) : false;
|
|
10484
|
+
}
|
|
10485
|
+
|
|
10412
10486
|
hasVideo(callSession ) {
|
|
10413
10487
|
return this.phone ? this.phone.hasVideo(callSession) : false;
|
|
10414
10488
|
}
|
|
@@ -10568,6 +10642,7 @@ const AGENT_PAUSED = 'agent_paused';
|
|
|
10568
10642
|
const AGENT_UNPAUSED = 'agent_unpaused';
|
|
10569
10643
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
10570
10644
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
10645
|
+
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
10571
10646
|
|
|
10572
10647
|
const BLACKLIST_EVENTS = [
|
|
10573
10648
|
CHAT_MESSAGE_SENT,
|
|
@@ -10627,7 +10702,7 @@ class WebSocketClient extends Emitter {
|
|
|
10627
10702
|
|
|
10628
10703
|
connect() {
|
|
10629
10704
|
logger$6.info('connect method started', { host: this.host, token: this.token });
|
|
10630
|
-
this.socket = new ReconnectingWebSocket__default[
|
|
10705
|
+
this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
|
|
10631
10706
|
if (this.options.binaryType) {
|
|
10632
10707
|
this.socket.binaryType = this.options.binaryType;
|
|
10633
10708
|
}
|
|
@@ -10918,6 +10993,7 @@ WebSocketClient.eventLists = [
|
|
|
10918
10993
|
AGENT_UNPAUSED,
|
|
10919
10994
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
10920
10995
|
CONFERENCE_ADHOC_DELETED,
|
|
10996
|
+
MEETING_USER_PROGRESS,
|
|
10921
10997
|
];
|
|
10922
10998
|
|
|
10923
10999
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -10988,6 +11064,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
10988
11064
|
AGENT_UNPAUSED: AGENT_UNPAUSED,
|
|
10989
11065
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
10990
11066
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11067
|
+
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
10991
11068
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
10992
11069
|
'default': WebSocketClient
|
|
10993
11070
|
});
|
|
@@ -11880,7 +11957,7 @@ class Room$1 extends Emitter {
|
|
|
11880
11957
|
}
|
|
11881
11958
|
|
|
11882
11959
|
_mapMsid(rawSdp ) {
|
|
11883
|
-
const sdp = sdpParser__default[
|
|
11960
|
+
const sdp = sdpParser__default['default'].parse(rawSdp);
|
|
11884
11961
|
const labelMsidArray = sdp.media.filter(media => !!media.label).map(({ label, msid }) => ({
|
|
11885
11962
|
label: String(label),
|
|
11886
11963
|
streamId: msid.split(' ')[0],
|
|
@@ -13639,4 +13716,4 @@ var Auth$1 = global.wazoAuthInstance;
|
|
|
13639
13716
|
|
|
13640
13717
|
exports.InvalidAuthorization = InvalidAuthorization;
|
|
13641
13718
|
exports.InvalidSubscription = InvalidSubscription;
|
|
13642
|
-
exports
|
|
13719
|
+
exports.default = Auth$1;
|