@wazo/sdk 0.38.6 → 0.38.9
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 +2 -2
- package/esm/__tests__/api-client.test.js +142 -2
- package/esm/__tests__/web-rtc-client.test.js +249 -28
- package/esm/api/calld.js +8 -0
- package/esm/api/confd.js +134 -2
- package/esm/api-client.js +142 -2
- package/esm/checker/Checker.js +205 -25
- package/esm/checker/checks/aor.js +142 -2
- package/esm/checker/checks/api.js +142 -2
- package/esm/checker/checks/index.js +205 -25
- package/esm/checker/checks/wazo-websocket.js +2 -0
- package/esm/checker/checks/webrtc-transport.js +203 -25
- package/esm/checker/checks/webrtc.js +203 -25
- package/esm/domain/AdHocAPIConference.js +142 -2
- package/esm/domain/Features.js +142 -2
- package/esm/domain/Meeting.js +18 -0
- package/esm/domain/MeetingAuthorization.js +70 -0
- package/esm/domain/Phone/CTIPhone.js +142 -2
- package/esm/domain/Phone/WebRTCPhone.js +1 -3
- package/esm/domain/__tests__/Meeting.test.js +87 -1
- package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
- package/esm/index.js +249 -31
- package/esm/lib/WazoSessionDescriptionHandler.js +22 -1
- package/esm/service/CallApi.js +142 -2
- package/esm/service/getApiClient.js +142 -2
- package/esm/simple/Auth.js +249 -31
- package/esm/simple/Configuration.js +249 -31
- package/esm/simple/Directory.js +142 -2
- package/esm/simple/Phone.js +249 -31
- package/esm/simple/Websocket.js +3 -0
- package/esm/simple/index.js +249 -31
- package/esm/simple/room/LocalParticipant.js +249 -31
- package/esm/simple/room/Participant.js +249 -31
- package/esm/simple/room/RemoteParticipant.js +249 -31
- package/esm/simple/room/Room.js +249 -31
- package/esm/simple/room/SipRoom.js +249 -31
- package/esm/simple/room/Stream.js +249 -31
- package/esm/simple/room/__tests__/Participant.test.js +14745 -0
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +249 -31
- package/esm/simple/utils.js +249 -31
- package/esm/utils/__tests__/object.test.js +57 -0
- package/esm/utils/__tests__/sdp.test.js +50 -0
- package/esm/utils/__tests__/string.test.js +30 -0
- package/esm/utils/object.js +24 -0
- package/esm/utils/sdp.js +19 -1
- package/esm/utils/string.js +10 -0
- package/esm/web-rtc-client.js +203 -25
- package/esm/websocket-client.js +3 -1
- package/lib/__tests__/api-client.test.js +142 -2
- package/lib/__tests__/web-rtc-client.test.js +249 -28
- package/lib/api/calld.js +8 -0
- package/lib/api/confd.js +134 -2
- package/lib/api-client.js +142 -2
- package/lib/checker/Checker.js +205 -25
- package/lib/checker/checks/aor.js +142 -2
- package/lib/checker/checks/api.js +142 -2
- package/lib/checker/checks/index.js +205 -25
- package/lib/checker/checks/wazo-websocket.js +2 -0
- package/lib/checker/checks/webrtc-transport.js +203 -25
- package/lib/checker/checks/webrtc.js +203 -25
- package/lib/domain/AdHocAPIConference.js +142 -2
- package/lib/domain/Features.js +142 -2
- package/lib/domain/Meeting.js +18 -0
- package/lib/domain/MeetingAuthorization.js +79 -0
- package/lib/domain/Phone/CTIPhone.js +142 -2
- package/lib/domain/Phone/WebRTCPhone.js +1 -3
- package/lib/domain/__tests__/Meeting.test.js +87 -1
- package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
- package/lib/index.js +249 -31
- package/lib/lib/WazoSessionDescriptionHandler.js +22 -1
- package/lib/service/CallApi.js +142 -2
- package/lib/service/getApiClient.js +142 -2
- package/lib/simple/Auth.js +249 -31
- package/lib/simple/Configuration.js +249 -31
- package/lib/simple/Directory.js +142 -2
- package/lib/simple/Phone.js +249 -31
- package/lib/simple/Websocket.js +3 -0
- package/lib/simple/index.js +249 -31
- package/lib/simple/room/LocalParticipant.js +249 -31
- package/lib/simple/room/Participant.js +249 -31
- package/lib/simple/room/RemoteParticipant.js +249 -31
- package/lib/simple/room/Room.js +249 -31
- package/lib/simple/room/SipRoom.js +249 -31
- package/lib/simple/room/Stream.js +249 -31
- package/lib/simple/room/__tests__/Participant.test.js +14755 -0
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +249 -31
- package/lib/simple/utils.js +249 -31
- package/lib/utils/__tests__/object.test.js +59 -0
- package/lib/utils/__tests__/sdp.test.js +50 -0
- package/lib/utils/__tests__/string.test.js +32 -0
- package/lib/utils/object.js +28 -0
- package/lib/utils/sdp.js +19 -0
- package/lib/utils/string.js +14 -0
- package/lib/web-rtc-client.js +203 -25
- package/lib/websocket-client.js +3 -0
- package/package.json +2 -2
- package/src/__tests__/web-rtc-client.test.js +46 -3
- package/src/api/calld.js +8 -0
- package/src/api/confd.js +43 -2
- package/src/domain/Meeting.js +20 -0
- package/src/domain/MeetingAuthorization.js +67 -0
- package/src/domain/Phone/WebRTCPhone.js +1 -3
- package/src/domain/__tests__/Meeting.test.js +70 -1
- package/src/domain/__tests__/MeetingAuthorization.test.js +58 -0
- package/src/lib/WazoSessionDescriptionHandler.js +5 -2
- package/src/simple/room/Participant.js +40 -0
- package/src/simple/room/Room.js +2 -2
- package/src/simple/room/SipRoom.js +1 -1
- package/src/simple/room/__tests__/Participant.test.js +81 -0
- package/src/types/WebSocketMessage.js +7 -1
- package/src/utils/__tests__/object.test.js +35 -0
- package/src/utils/__tests__/sdp.test.js +33 -1
- package/src/utils/__tests__/string.test.js +23 -0
- package/src/utils/object.js +15 -0
- package/src/utils/sdp.js +18 -0
- package/src/utils/string.js +8 -0
- package/src/web-rtc-client.js +39 -22
- package/src/websocket-client.js +2 -0
package/lib/simple/Auth.js
CHANGED
|
@@ -2657,6 +2657,70 @@ class ExternalApp {
|
|
|
2657
2657
|
|
|
2658
2658
|
//
|
|
2659
2659
|
|
|
2660
|
+
class MeetingAuthorization {
|
|
2661
|
+
|
|
2662
|
+
|
|
2663
|
+
|
|
2664
|
+
|
|
2665
|
+
|
|
2666
|
+
|
|
2667
|
+
constructor({
|
|
2668
|
+
meetingUuid,
|
|
2669
|
+
uuid,
|
|
2670
|
+
userUuid,
|
|
2671
|
+
userName,
|
|
2672
|
+
} = {}) {
|
|
2673
|
+
this.meetingUuid = meetingUuid;
|
|
2674
|
+
this.uuid = uuid;
|
|
2675
|
+
this.userUuid = userUuid;
|
|
2676
|
+
this.userName = userName;
|
|
2677
|
+
}
|
|
2678
|
+
|
|
2679
|
+
setStatus(status ) {
|
|
2680
|
+
this.status = status;
|
|
2681
|
+
}
|
|
2682
|
+
|
|
2683
|
+
getStatus() {
|
|
2684
|
+
return this.status;
|
|
2685
|
+
}
|
|
2686
|
+
|
|
2687
|
+
static parse(plain ) {
|
|
2688
|
+
const {
|
|
2689
|
+
meeting_uuid: meetingUuid,
|
|
2690
|
+
uuid,
|
|
2691
|
+
guest_uuid: userUuid,
|
|
2692
|
+
guest_name: userName,
|
|
2693
|
+
} = plain;
|
|
2694
|
+
|
|
2695
|
+
return new MeetingAuthorization({
|
|
2696
|
+
meetingUuid,
|
|
2697
|
+
uuid,
|
|
2698
|
+
userUuid,
|
|
2699
|
+
userName,
|
|
2700
|
+
});
|
|
2701
|
+
}
|
|
2702
|
+
|
|
2703
|
+
static parseMany(items ) {
|
|
2704
|
+
if (!items) {
|
|
2705
|
+
return [];
|
|
2706
|
+
}
|
|
2707
|
+
return items.map(MeetingAuthorization.parse);
|
|
2708
|
+
}
|
|
2709
|
+
}
|
|
2710
|
+
|
|
2711
|
+
//
|
|
2712
|
+
|
|
2713
|
+
|
|
2714
|
+
|
|
2715
|
+
|
|
2716
|
+
|
|
2717
|
+
|
|
2718
|
+
|
|
2719
|
+
|
|
2720
|
+
|
|
2721
|
+
|
|
2722
|
+
|
|
2723
|
+
|
|
2660
2724
|
|
|
2661
2725
|
|
|
2662
2726
|
|
|
@@ -2667,6 +2731,7 @@ class ExternalApp {
|
|
|
2667
2731
|
|
|
2668
2732
|
|
|
2669
2733
|
|
|
2734
|
+
|
|
2670
2735
|
|
|
2671
2736
|
|
|
2672
2737
|
class Meeting {
|
|
@@ -2681,6 +2746,8 @@ class Meeting {
|
|
|
2681
2746
|
|
|
2682
2747
|
|
|
2683
2748
|
|
|
2749
|
+
|
|
2750
|
+
|
|
2684
2751
|
|
|
2685
2752
|
static parse(plain ) {
|
|
2686
2753
|
return new Meeting({
|
|
@@ -2693,6 +2760,7 @@ class Meeting {
|
|
|
2693
2760
|
extension: plain.exten,
|
|
2694
2761
|
persistent: plain.persistent,
|
|
2695
2762
|
creationTime: moment__default['default'](plain.creation_time).toDate(),
|
|
2763
|
+
requireAuthorization: plain.require_authorization,
|
|
2696
2764
|
});
|
|
2697
2765
|
}
|
|
2698
2766
|
|
|
@@ -2717,6 +2785,7 @@ class Meeting {
|
|
|
2717
2785
|
extension,
|
|
2718
2786
|
persistent,
|
|
2719
2787
|
creationTime,
|
|
2788
|
+
requireAuthorization,
|
|
2720
2789
|
} = {}) {
|
|
2721
2790
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2722
2791
|
this.uri = uri;
|
|
@@ -2727,6 +2796,7 @@ class Meeting {
|
|
|
2727
2796
|
this.extension = extension;
|
|
2728
2797
|
this.persistent = persistent;
|
|
2729
2798
|
this.creationTime = creationTime;
|
|
2799
|
+
this.requireAuthorization = requireAuthorization;
|
|
2730
2800
|
|
|
2731
2801
|
// Useful to compare instead of instanceof with minified code
|
|
2732
2802
|
this.type = 'Meeting';
|
|
@@ -2737,8 +2807,32 @@ class Meeting {
|
|
|
2737
2807
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
2738
2808
|
return { username, secret };
|
|
2739
2809
|
}
|
|
2810
|
+
|
|
2740
2811
|
}
|
|
2741
2812
|
|
|
2813
|
+
//
|
|
2814
|
+
|
|
2815
|
+
const camelToUnderscore = (key ) => {
|
|
2816
|
+
if (typeof key !== 'string') {
|
|
2817
|
+
throw new Error('Input is not a string');
|
|
2818
|
+
}
|
|
2819
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
2820
|
+
};
|
|
2821
|
+
|
|
2822
|
+
//
|
|
2823
|
+
|
|
2824
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
2825
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
2826
|
+
throw new Error('Input is not an object');
|
|
2827
|
+
}
|
|
2828
|
+
|
|
2829
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
2830
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
2831
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
2832
|
+
return acc;
|
|
2833
|
+
}, {});
|
|
2834
|
+
};
|
|
2835
|
+
|
|
2742
2836
|
/* */
|
|
2743
2837
|
|
|
2744
2838
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -2807,8 +2901,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2807
2901
|
getMyMeetings: () =>
|
|
2808
2902
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2809
2903
|
|
|
2810
|
-
createMyMeeting: (
|
|
2811
|
-
client
|
|
2904
|
+
createMyMeeting: (args ) =>
|
|
2905
|
+
client
|
|
2906
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
2907
|
+
.then(Meeting.parse),
|
|
2908
|
+
|
|
2909
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
2910
|
+
client.put(
|
|
2911
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
2912
|
+
convertKeysFromCamelToUnderscore(data),
|
|
2913
|
+
null,
|
|
2914
|
+
ApiRequester.successResponseParser,
|
|
2915
|
+
),
|
|
2812
2916
|
|
|
2813
2917
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2814
2918
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2816,8 +2920,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2816
2920
|
getMeeting: (meetingUuid ) =>
|
|
2817
2921
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2818
2922
|
|
|
2923
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
2924
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
2925
|
+
|
|
2926
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
2927
|
+
client.put(
|
|
2928
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
2929
|
+
{},
|
|
2930
|
+
null,
|
|
2931
|
+
ApiRequester.successResponseParser,
|
|
2932
|
+
),
|
|
2933
|
+
|
|
2934
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
2935
|
+
client.put(
|
|
2936
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
2937
|
+
{},
|
|
2938
|
+
null,
|
|
2939
|
+
ApiRequester.successResponseParser,
|
|
2940
|
+
),
|
|
2941
|
+
|
|
2819
2942
|
guestGetMeeting: (meetingUuid ) =>
|
|
2820
2943
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2944
|
+
|
|
2945
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
2946
|
+
client
|
|
2947
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
2948
|
+
.then(MeetingAuthorization.parse),
|
|
2949
|
+
|
|
2950
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
2951
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
2952
|
+
|
|
2821
2953
|
});
|
|
2822
2954
|
|
|
2823
2955
|
//
|
|
@@ -5068,6 +5200,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
5068
5200
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
5069
5201
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
5070
5202
|
|
|
5203
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
5204
|
+
client.delete(
|
|
5205
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
5206
|
+
null,
|
|
5207
|
+
null,
|
|
5208
|
+
ApiRequester.successResponseParser,
|
|
5209
|
+
),
|
|
5210
|
+
|
|
5071
5211
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
5072
5212
|
|
|
5073
5213
|
mute: (callId ) =>
|
|
@@ -5915,6 +6055,24 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5915
6055
|
return fixed;
|
|
5916
6056
|
};
|
|
5917
6057
|
|
|
6058
|
+
const addIcesInAllBundles = (sdp ) => {
|
|
6059
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
6060
|
+
|
|
6061
|
+
const mediaWithCandidate = parsedSdp.media.find(media => !!media.candidates);
|
|
6062
|
+
if (!mediaWithCandidate) {
|
|
6063
|
+
return sdp;
|
|
6064
|
+
}
|
|
6065
|
+
|
|
6066
|
+
const { candidates } = mediaWithCandidate;
|
|
6067
|
+
|
|
6068
|
+
parsedSdp.media = parsedSdp.media.map(media => ({
|
|
6069
|
+
...media,
|
|
6070
|
+
candidates: media.candidates || candidates,
|
|
6071
|
+
}));
|
|
6072
|
+
|
|
6073
|
+
return sdpParser__default['default'].write(parsedSdp);
|
|
6074
|
+
};
|
|
6075
|
+
|
|
5918
6076
|
/* global RTCSessionDescriptionInit, navigator */
|
|
5919
6077
|
|
|
5920
6078
|
const wazoLogger = IssueReporter$1 ? IssueReporter$1.loggerFor('webrtc-sdh') : console;
|
|
@@ -6044,7 +6202,10 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
6044
6202
|
|
|
6045
6203
|
// Check if we got ICEs
|
|
6046
6204
|
if (sdp.indexOf('a=candidate') !== -1) {
|
|
6047
|
-
return
|
|
6205
|
+
return {
|
|
6206
|
+
type: description.type,
|
|
6207
|
+
sdp: addIcesInAllBundles(sdp),
|
|
6208
|
+
};
|
|
6048
6209
|
}
|
|
6049
6210
|
|
|
6050
6211
|
wazoLogger.info('No ICE candidates found in SDP, fixing it with gathered ices', this.gatheredCandidates);
|
|
@@ -7504,7 +7665,7 @@ class WebRTCClient extends Emitter {
|
|
|
7504
7665
|
});
|
|
7505
7666
|
}
|
|
7506
7667
|
|
|
7507
|
-
changeAudioInputDevice(id , session , force ) {
|
|
7668
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
7508
7669
|
const currentId = this.getAudioDeviceId();
|
|
7509
7670
|
logger$9.info('setting audio input device', { id, currentId, session: !!session });
|
|
7510
7671
|
|
|
@@ -7512,33 +7673,50 @@ class WebRTCClient extends Emitter {
|
|
|
7512
7673
|
return null;
|
|
7513
7674
|
}
|
|
7514
7675
|
|
|
7676
|
+
// in order to handle an audio track change for default devices
|
|
7677
|
+
// we need the actual id of the device (not 'default')
|
|
7678
|
+
let deviceId = id;
|
|
7679
|
+
if (id === 'default' && navigator.mediaDevices) {
|
|
7680
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
7681
|
+
const defaultDevice = devices.find(device => device.deviceId === 'default');
|
|
7682
|
+
if (defaultDevice) {
|
|
7683
|
+
const deviceLabel = defaultDevice.label.replace('Default - ', '');
|
|
7684
|
+
const targetDevice = devices.find(device => device.label === deviceLabel);
|
|
7685
|
+
if (targetDevice) {
|
|
7686
|
+
deviceId = targetDevice.deviceId;
|
|
7687
|
+
if (!force && deviceId === currentId) {
|
|
7688
|
+
return null;
|
|
7689
|
+
}
|
|
7690
|
+
}
|
|
7691
|
+
}
|
|
7692
|
+
}
|
|
7693
|
+
|
|
7515
7694
|
// let's update the local audio value
|
|
7516
7695
|
if (this.audio) {
|
|
7517
7696
|
this.audio = {
|
|
7518
7697
|
deviceId: {
|
|
7519
|
-
exact:
|
|
7698
|
+
exact: deviceId,
|
|
7520
7699
|
},
|
|
7521
7700
|
};
|
|
7522
7701
|
}
|
|
7523
7702
|
|
|
7524
|
-
if (session) {
|
|
7703
|
+
if (session && navigator.mediaDevices) {
|
|
7525
7704
|
const sdh = session.sessionDescriptionHandler;
|
|
7526
7705
|
const pc = sdh.peerConnection;
|
|
7527
7706
|
|
|
7528
|
-
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
|
|
7707
|
+
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7708
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7709
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
7710
|
+
const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7532
7711
|
|
|
7533
|
-
|
|
7534
|
-
|
|
7535
|
-
|
|
7536
|
-
}
|
|
7537
|
-
sender.replaceTrack(audioTrack);
|
|
7712
|
+
if (sender) {
|
|
7713
|
+
if (sender.track) {
|
|
7714
|
+
audioTrack.enabled = sender.track.enabled;
|
|
7538
7715
|
}
|
|
7716
|
+
sender.replaceTrack(audioTrack);
|
|
7717
|
+
}
|
|
7539
7718
|
|
|
7540
|
-
|
|
7541
|
-
});
|
|
7719
|
+
return stream;
|
|
7542
7720
|
}
|
|
7543
7721
|
}
|
|
7544
7722
|
|
|
@@ -7558,14 +7736,14 @@ class WebRTCClient extends Emitter {
|
|
|
7558
7736
|
return null;
|
|
7559
7737
|
}
|
|
7560
7738
|
|
|
7561
|
-
// let's
|
|
7562
|
-
|
|
7563
|
-
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
}
|
|
7568
|
-
}
|
|
7739
|
+
// let's make sure we don't lose other video constraints settings -- width, height, frameRate...
|
|
7740
|
+
const videoObject = typeof this.video === 'object' ? this.video : {};
|
|
7741
|
+
this.video = {
|
|
7742
|
+
...videoObject,
|
|
7743
|
+
deviceId: {
|
|
7744
|
+
exact: id,
|
|
7745
|
+
},
|
|
7746
|
+
};
|
|
7569
7747
|
}
|
|
7570
7748
|
|
|
7571
7749
|
changeSessionVideoInputDevice(id , session ) {
|
|
@@ -9167,9 +9345,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9167
9345
|
|
|
9168
9346
|
try {
|
|
9169
9347
|
if (this.currentScreenShare.stream) {
|
|
9170
|
-
this.currentScreenShare.stream.getTracks()
|
|
9171
|
-
.filter(track => track.kind === 'video')
|
|
9172
|
-
.forEach(track => track.stop());
|
|
9348
|
+
this.currentScreenShare.stream.getTracks().forEach(track => track.stop());
|
|
9173
9349
|
}
|
|
9174
9350
|
|
|
9175
9351
|
if (restoreLocalStream) {
|
|
@@ -10960,6 +11136,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
10960
11136
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
10961
11137
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
10962
11138
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
11139
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
10963
11140
|
|
|
10964
11141
|
const BLACKLIST_EVENTS = [
|
|
10965
11142
|
CHAT_MESSAGE_SENT,
|
|
@@ -11311,6 +11488,7 @@ WebSocketClient.eventLists = [
|
|
|
11311
11488
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11312
11489
|
CONFERENCE_ADHOC_DELETED,
|
|
11313
11490
|
MEETING_USER_PROGRESS,
|
|
11491
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11314
11492
|
];
|
|
11315
11493
|
|
|
11316
11494
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -11382,6 +11560,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
11382
11560
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11383
11561
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11384
11562
|
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
11563
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED: MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11385
11564
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
11386
11565
|
'default': WebSocketClient
|
|
11387
11566
|
});
|
|
@@ -11486,6 +11665,7 @@ class Participant extends Emitter {
|
|
|
11486
11665
|
|
|
11487
11666
|
|
|
11488
11667
|
|
|
11668
|
+
|
|
11489
11669
|
|
|
11490
11670
|
|
|
11491
11671
|
|
|
@@ -11503,6 +11683,7 @@ class Participant extends Emitter {
|
|
|
11503
11683
|
|
|
11504
11684
|
|
|
11505
11685
|
|
|
11686
|
+
|
|
11506
11687
|
|
|
11507
11688
|
/**
|
|
11508
11689
|
* @param room Room The room where the participant is
|
|
@@ -11526,6 +11707,7 @@ class Participant extends Emitter {
|
|
|
11526
11707
|
this.screensharing = false;
|
|
11527
11708
|
this.isOnHold = false;
|
|
11528
11709
|
this.extra = extra;
|
|
11710
|
+
this.banned = false;
|
|
11529
11711
|
|
|
11530
11712
|
this.ON_UPDATED = 'participant/ON_UPDATED';
|
|
11531
11713
|
this.ON_START_TALKING = 'participant/ON_START_TALKING';
|
|
@@ -11542,6 +11724,7 @@ class Participant extends Emitter {
|
|
|
11542
11724
|
this.ON_EXTRA_CHANGE = 'participant/ON_EXTRA_CHANGE';
|
|
11543
11725
|
this.ON_HOLD = 'participant/ON_HOLD';
|
|
11544
11726
|
this.ON_RESUME = 'participant/ON_RESUME';
|
|
11727
|
+
this.ON_BAN = 'participant/ON_BAN';
|
|
11545
11728
|
}
|
|
11546
11729
|
|
|
11547
11730
|
triggerEvent(name , ...args ) {
|
|
@@ -11582,6 +11765,10 @@ class Participant extends Emitter {
|
|
|
11582
11765
|
status.extra = this.extra;
|
|
11583
11766
|
break;
|
|
11584
11767
|
}
|
|
11768
|
+
case this.ON_BAN: {
|
|
11769
|
+
status.banned = true;
|
|
11770
|
+
break;
|
|
11771
|
+
}
|
|
11585
11772
|
}
|
|
11586
11773
|
|
|
11587
11774
|
if (broadcast) {
|
|
@@ -11684,6 +11871,11 @@ class Participant extends Emitter {
|
|
|
11684
11871
|
this.triggerUpdate(this.ON_RESUME, broadcast);
|
|
11685
11872
|
}
|
|
11686
11873
|
|
|
11874
|
+
onBan(broadcast = true) {
|
|
11875
|
+
this.banned = true;
|
|
11876
|
+
this.triggerUpdate(this.ON_BAN, broadcast);
|
|
11877
|
+
}
|
|
11878
|
+
|
|
11687
11879
|
getStatus() {
|
|
11688
11880
|
return {
|
|
11689
11881
|
callId: this.callId,
|
|
@@ -11730,6 +11922,10 @@ class Participant extends Emitter {
|
|
|
11730
11922
|
}
|
|
11731
11923
|
}
|
|
11732
11924
|
|
|
11925
|
+
if (status.banned) {
|
|
11926
|
+
this.onBan(false);
|
|
11927
|
+
}
|
|
11928
|
+
|
|
11733
11929
|
// Poor man's object comparison
|
|
11734
11930
|
if (typeof status.extra !== 'undefined' && JSON.stringify(this.extra) !== JSON.stringify(status.extra)) {
|
|
11735
11931
|
this.extra = { ...this.extra, ...status.extra };
|
|
@@ -11757,6 +11953,28 @@ class Participant extends Emitter {
|
|
|
11757
11953
|
this.streams = streams;
|
|
11758
11954
|
this.videoStreams = streams;
|
|
11759
11955
|
}
|
|
11956
|
+
|
|
11957
|
+
async ban(apiRequestDelay = null) {
|
|
11958
|
+
const { meetingUuid } = this.room;
|
|
11959
|
+
if (!meetingUuid) {
|
|
11960
|
+
throw new Error('Attempting to ban a participant without a `meetingUuid`');
|
|
11961
|
+
}
|
|
11962
|
+
|
|
11963
|
+
// this notifies all that someone is being banned
|
|
11964
|
+
this.onBan(true);
|
|
11965
|
+
|
|
11966
|
+
// this allows to delay the actual ban, in order for the banned participant as well as others to react to the situation
|
|
11967
|
+
if (apiRequestDelay) {
|
|
11968
|
+
await this.delay(apiRequestDelay);
|
|
11969
|
+
}
|
|
11970
|
+
|
|
11971
|
+
// proceed with the actual kick
|
|
11972
|
+
return getApiClient().calld.banMeetingParticipant(meetingUuid, this.callId);
|
|
11973
|
+
}
|
|
11974
|
+
|
|
11975
|
+
async delay(ms ) {
|
|
11976
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
11977
|
+
}
|
|
11760
11978
|
}
|
|
11761
11979
|
|
|
11762
11980
|
//
|
|
@@ -11909,7 +12127,7 @@ class Room$1 extends Emitter {
|
|
|
11909
12127
|
logger$3.info('connecting to room', { extension, audioOnly, room: !!room });
|
|
11910
12128
|
|
|
11911
12129
|
if (!room) {
|
|
11912
|
-
await Wazo.Phone.connect();
|
|
12130
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
11913
12131
|
|
|
11914
12132
|
const withCamera = constraints && !!constraints.video;
|
|
11915
12133
|
|
|
@@ -12354,7 +12572,7 @@ class Room$1 extends Emitter {
|
|
|
12354
12572
|
const participant = this._getParticipantFromCallId(status.callId);
|
|
12355
12573
|
|
|
12356
12574
|
if (participant) {
|
|
12357
|
-
// we're
|
|
12575
|
+
// we're receiving, so no need to broadcast
|
|
12358
12576
|
participant.updateStatus(status, false);
|
|
12359
12577
|
}
|
|
12360
12578
|
break;
|
|
@@ -12621,7 +12839,7 @@ class SipRoom extends Room$1 {
|
|
|
12621
12839
|
logger$2.info('connecting to sip room', { extension, audioOnly, room: !!room });
|
|
12622
12840
|
|
|
12623
12841
|
if (!room) {
|
|
12624
|
-
await Wazo.Phone.connect();
|
|
12842
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
12625
12843
|
|
|
12626
12844
|
const withCamera = constraints && !!constraints.video;
|
|
12627
12845
|
|