@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
|
@@ -2645,6 +2645,70 @@ class ExternalApp {
|
|
|
2645
2645
|
|
|
2646
2646
|
//
|
|
2647
2647
|
|
|
2648
|
+
class MeetingAuthorization {
|
|
2649
|
+
|
|
2650
|
+
|
|
2651
|
+
|
|
2652
|
+
|
|
2653
|
+
|
|
2654
|
+
|
|
2655
|
+
constructor({
|
|
2656
|
+
meetingUuid,
|
|
2657
|
+
uuid,
|
|
2658
|
+
userUuid,
|
|
2659
|
+
userName,
|
|
2660
|
+
} = {}) {
|
|
2661
|
+
this.meetingUuid = meetingUuid;
|
|
2662
|
+
this.uuid = uuid;
|
|
2663
|
+
this.userUuid = userUuid;
|
|
2664
|
+
this.userName = userName;
|
|
2665
|
+
}
|
|
2666
|
+
|
|
2667
|
+
setStatus(status ) {
|
|
2668
|
+
this.status = status;
|
|
2669
|
+
}
|
|
2670
|
+
|
|
2671
|
+
getStatus() {
|
|
2672
|
+
return this.status;
|
|
2673
|
+
}
|
|
2674
|
+
|
|
2675
|
+
static parse(plain ) {
|
|
2676
|
+
const {
|
|
2677
|
+
meeting_uuid: meetingUuid,
|
|
2678
|
+
uuid,
|
|
2679
|
+
guest_uuid: userUuid,
|
|
2680
|
+
guest_name: userName,
|
|
2681
|
+
} = plain;
|
|
2682
|
+
|
|
2683
|
+
return new MeetingAuthorization({
|
|
2684
|
+
meetingUuid,
|
|
2685
|
+
uuid,
|
|
2686
|
+
userUuid,
|
|
2687
|
+
userName,
|
|
2688
|
+
});
|
|
2689
|
+
}
|
|
2690
|
+
|
|
2691
|
+
static parseMany(items ) {
|
|
2692
|
+
if (!items) {
|
|
2693
|
+
return [];
|
|
2694
|
+
}
|
|
2695
|
+
return items.map(MeetingAuthorization.parse);
|
|
2696
|
+
}
|
|
2697
|
+
}
|
|
2698
|
+
|
|
2699
|
+
//
|
|
2700
|
+
|
|
2701
|
+
|
|
2702
|
+
|
|
2703
|
+
|
|
2704
|
+
|
|
2705
|
+
|
|
2706
|
+
|
|
2707
|
+
|
|
2708
|
+
|
|
2709
|
+
|
|
2710
|
+
|
|
2711
|
+
|
|
2648
2712
|
|
|
2649
2713
|
|
|
2650
2714
|
|
|
@@ -2655,6 +2719,7 @@ class ExternalApp {
|
|
|
2655
2719
|
|
|
2656
2720
|
|
|
2657
2721
|
|
|
2722
|
+
|
|
2658
2723
|
|
|
2659
2724
|
|
|
2660
2725
|
class Meeting {
|
|
@@ -2669,6 +2734,8 @@ class Meeting {
|
|
|
2669
2734
|
|
|
2670
2735
|
|
|
2671
2736
|
|
|
2737
|
+
|
|
2738
|
+
|
|
2672
2739
|
|
|
2673
2740
|
static parse(plain ) {
|
|
2674
2741
|
return new Meeting({
|
|
@@ -2681,6 +2748,7 @@ class Meeting {
|
|
|
2681
2748
|
extension: plain.exten,
|
|
2682
2749
|
persistent: plain.persistent,
|
|
2683
2750
|
creationTime: moment(plain.creation_time).toDate(),
|
|
2751
|
+
requireAuthorization: plain.require_authorization,
|
|
2684
2752
|
});
|
|
2685
2753
|
}
|
|
2686
2754
|
|
|
@@ -2705,6 +2773,7 @@ class Meeting {
|
|
|
2705
2773
|
extension,
|
|
2706
2774
|
persistent,
|
|
2707
2775
|
creationTime,
|
|
2776
|
+
requireAuthorization,
|
|
2708
2777
|
} = {}) {
|
|
2709
2778
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2710
2779
|
this.uri = uri;
|
|
@@ -2715,6 +2784,7 @@ class Meeting {
|
|
|
2715
2784
|
this.extension = extension;
|
|
2716
2785
|
this.persistent = persistent;
|
|
2717
2786
|
this.creationTime = creationTime;
|
|
2787
|
+
this.requireAuthorization = requireAuthorization;
|
|
2718
2788
|
|
|
2719
2789
|
// Useful to compare instead of instanceof with minified code
|
|
2720
2790
|
this.type = 'Meeting';
|
|
@@ -2725,8 +2795,32 @@ class Meeting {
|
|
|
2725
2795
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
2726
2796
|
return { username, secret };
|
|
2727
2797
|
}
|
|
2798
|
+
|
|
2728
2799
|
}
|
|
2729
2800
|
|
|
2801
|
+
//
|
|
2802
|
+
|
|
2803
|
+
const camelToUnderscore = (key ) => {
|
|
2804
|
+
if (typeof key !== 'string') {
|
|
2805
|
+
throw new Error('Input is not a string');
|
|
2806
|
+
}
|
|
2807
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
2808
|
+
};
|
|
2809
|
+
|
|
2810
|
+
//
|
|
2811
|
+
|
|
2812
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
2813
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
2814
|
+
throw new Error('Input is not an object');
|
|
2815
|
+
}
|
|
2816
|
+
|
|
2817
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
2818
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
2819
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
2820
|
+
return acc;
|
|
2821
|
+
}, {});
|
|
2822
|
+
};
|
|
2823
|
+
|
|
2730
2824
|
/* */
|
|
2731
2825
|
|
|
2732
2826
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -2795,8 +2889,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2795
2889
|
getMyMeetings: () =>
|
|
2796
2890
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2797
2891
|
|
|
2798
|
-
createMyMeeting: (
|
|
2799
|
-
client
|
|
2892
|
+
createMyMeeting: (args ) =>
|
|
2893
|
+
client
|
|
2894
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
2895
|
+
.then(Meeting.parse),
|
|
2896
|
+
|
|
2897
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
2898
|
+
client.put(
|
|
2899
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
2900
|
+
convertKeysFromCamelToUnderscore(data),
|
|
2901
|
+
null,
|
|
2902
|
+
ApiRequester.successResponseParser,
|
|
2903
|
+
),
|
|
2800
2904
|
|
|
2801
2905
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2802
2906
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2804,8 +2908,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2804
2908
|
getMeeting: (meetingUuid ) =>
|
|
2805
2909
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2806
2910
|
|
|
2911
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
2912
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
2913
|
+
|
|
2914
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
2915
|
+
client.put(
|
|
2916
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
2917
|
+
{},
|
|
2918
|
+
null,
|
|
2919
|
+
ApiRequester.successResponseParser,
|
|
2920
|
+
),
|
|
2921
|
+
|
|
2922
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
2923
|
+
client.put(
|
|
2924
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
2925
|
+
{},
|
|
2926
|
+
null,
|
|
2927
|
+
ApiRequester.successResponseParser,
|
|
2928
|
+
),
|
|
2929
|
+
|
|
2807
2930
|
guestGetMeeting: (meetingUuid ) =>
|
|
2808
2931
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2932
|
+
|
|
2933
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
2934
|
+
client
|
|
2935
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
2936
|
+
.then(MeetingAuthorization.parse),
|
|
2937
|
+
|
|
2938
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
2939
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
2940
|
+
|
|
2809
2941
|
});
|
|
2810
2942
|
|
|
2811
2943
|
//
|
|
@@ -5056,6 +5188,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
5056
5188
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
5057
5189
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
5058
5190
|
|
|
5191
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
5192
|
+
client.delete(
|
|
5193
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
5194
|
+
null,
|
|
5195
|
+
null,
|
|
5196
|
+
ApiRequester.successResponseParser,
|
|
5197
|
+
),
|
|
5198
|
+
|
|
5059
5199
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
5060
5200
|
|
|
5061
5201
|
mute: (callId ) =>
|
|
@@ -6204,6 +6344,24 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
6204
6344
|
return fixed;
|
|
6205
6345
|
};
|
|
6206
6346
|
|
|
6347
|
+
const addIcesInAllBundles = (sdp ) => {
|
|
6348
|
+
const parsedSdp = sdpParser.parse(sdp);
|
|
6349
|
+
|
|
6350
|
+
const mediaWithCandidate = parsedSdp.media.find(media => !!media.candidates);
|
|
6351
|
+
if (!mediaWithCandidate) {
|
|
6352
|
+
return sdp;
|
|
6353
|
+
}
|
|
6354
|
+
|
|
6355
|
+
const { candidates } = mediaWithCandidate;
|
|
6356
|
+
|
|
6357
|
+
parsedSdp.media = parsedSdp.media.map(media => ({
|
|
6358
|
+
...media,
|
|
6359
|
+
candidates: media.candidates || candidates,
|
|
6360
|
+
}));
|
|
6361
|
+
|
|
6362
|
+
return sdpParser.write(parsedSdp);
|
|
6363
|
+
};
|
|
6364
|
+
|
|
6207
6365
|
/* global RTCSessionDescriptionInit, navigator */
|
|
6208
6366
|
|
|
6209
6367
|
const wazoLogger = IssueReporter$1 ? IssueReporter$1.loggerFor('webrtc-sdh') : console;
|
|
@@ -6333,7 +6491,10 @@ class WazoSessionDescriptionHandler extends SessionDescriptionHandler {
|
|
|
6333
6491
|
|
|
6334
6492
|
// Check if we got ICEs
|
|
6335
6493
|
if (sdp.indexOf('a=candidate') !== -1) {
|
|
6336
|
-
return
|
|
6494
|
+
return {
|
|
6495
|
+
type: description.type,
|
|
6496
|
+
sdp: addIcesInAllBundles(sdp),
|
|
6497
|
+
};
|
|
6337
6498
|
}
|
|
6338
6499
|
|
|
6339
6500
|
wazoLogger.info('No ICE candidates found in SDP, fixing it with gathered ices', this.gatheredCandidates);
|
|
@@ -7793,7 +7954,7 @@ class WebRTCClient extends Emitter {
|
|
|
7793
7954
|
});
|
|
7794
7955
|
}
|
|
7795
7956
|
|
|
7796
|
-
changeAudioInputDevice(id , session , force ) {
|
|
7957
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
7797
7958
|
const currentId = this.getAudioDeviceId();
|
|
7798
7959
|
logger$8.info('setting audio input device', { id, currentId, session: !!session });
|
|
7799
7960
|
|
|
@@ -7801,33 +7962,50 @@ class WebRTCClient extends Emitter {
|
|
|
7801
7962
|
return null;
|
|
7802
7963
|
}
|
|
7803
7964
|
|
|
7965
|
+
// in order to handle an audio track change for default devices
|
|
7966
|
+
// we need the actual id of the device (not 'default')
|
|
7967
|
+
let deviceId = id;
|
|
7968
|
+
if (id === 'default' && navigator.mediaDevices) {
|
|
7969
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
7970
|
+
const defaultDevice = devices.find(device => device.deviceId === 'default');
|
|
7971
|
+
if (defaultDevice) {
|
|
7972
|
+
const deviceLabel = defaultDevice.label.replace('Default - ', '');
|
|
7973
|
+
const targetDevice = devices.find(device => device.label === deviceLabel);
|
|
7974
|
+
if (targetDevice) {
|
|
7975
|
+
deviceId = targetDevice.deviceId;
|
|
7976
|
+
if (!force && deviceId === currentId) {
|
|
7977
|
+
return null;
|
|
7978
|
+
}
|
|
7979
|
+
}
|
|
7980
|
+
}
|
|
7981
|
+
}
|
|
7982
|
+
|
|
7804
7983
|
// let's update the local audio value
|
|
7805
7984
|
if (this.audio) {
|
|
7806
7985
|
this.audio = {
|
|
7807
7986
|
deviceId: {
|
|
7808
|
-
exact:
|
|
7987
|
+
exact: deviceId,
|
|
7809
7988
|
},
|
|
7810
7989
|
};
|
|
7811
7990
|
}
|
|
7812
7991
|
|
|
7813
|
-
if (session) {
|
|
7992
|
+
if (session && navigator.mediaDevices) {
|
|
7814
7993
|
const sdh = session.sessionDescriptionHandler;
|
|
7815
7994
|
const pc = sdh.peerConnection;
|
|
7816
7995
|
|
|
7817
|
-
|
|
7818
|
-
|
|
7819
|
-
|
|
7820
|
-
|
|
7996
|
+
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7997
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7998
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
7999
|
+
const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7821
8000
|
|
|
7822
|
-
|
|
7823
|
-
|
|
7824
|
-
|
|
7825
|
-
}
|
|
7826
|
-
sender.replaceTrack(audioTrack);
|
|
8001
|
+
if (sender) {
|
|
8002
|
+
if (sender.track) {
|
|
8003
|
+
audioTrack.enabled = sender.track.enabled;
|
|
7827
8004
|
}
|
|
8005
|
+
sender.replaceTrack(audioTrack);
|
|
8006
|
+
}
|
|
7828
8007
|
|
|
7829
|
-
|
|
7830
|
-
});
|
|
8008
|
+
return stream;
|
|
7831
8009
|
}
|
|
7832
8010
|
}
|
|
7833
8011
|
|
|
@@ -7847,14 +8025,14 @@ class WebRTCClient extends Emitter {
|
|
|
7847
8025
|
return null;
|
|
7848
8026
|
}
|
|
7849
8027
|
|
|
7850
|
-
// let's
|
|
7851
|
-
|
|
7852
|
-
|
|
7853
|
-
|
|
7854
|
-
|
|
7855
|
-
|
|
7856
|
-
}
|
|
7857
|
-
}
|
|
8028
|
+
// let's make sure we don't lose other video constraints settings -- width, height, frameRate...
|
|
8029
|
+
const videoObject = typeof this.video === 'object' ? this.video : {};
|
|
8030
|
+
this.video = {
|
|
8031
|
+
...videoObject,
|
|
8032
|
+
deviceId: {
|
|
8033
|
+
exact: id,
|
|
8034
|
+
},
|
|
8035
|
+
};
|
|
7858
8036
|
}
|
|
7859
8037
|
|
|
7860
8038
|
changeSessionVideoInputDevice(id , session ) {
|
|
@@ -9456,9 +9634,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9456
9634
|
|
|
9457
9635
|
try {
|
|
9458
9636
|
if (this.currentScreenShare.stream) {
|
|
9459
|
-
this.currentScreenShare.stream.getTracks()
|
|
9460
|
-
.filter(track => track.kind === 'video')
|
|
9461
|
-
.forEach(track => track.stop());
|
|
9637
|
+
this.currentScreenShare.stream.getTracks().forEach(track => track.stop());
|
|
9462
9638
|
}
|
|
9463
9639
|
|
|
9464
9640
|
if (restoreLocalStream) {
|
|
@@ -11249,6 +11425,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
11249
11425
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
11250
11426
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
11251
11427
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
11428
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
11252
11429
|
|
|
11253
11430
|
const BLACKLIST_EVENTS = [
|
|
11254
11431
|
CHAT_MESSAGE_SENT,
|
|
@@ -11600,6 +11777,7 @@ WebSocketClient.eventLists = [
|
|
|
11600
11777
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11601
11778
|
CONFERENCE_ADHOC_DELETED,
|
|
11602
11779
|
MEETING_USER_PROGRESS,
|
|
11780
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11603
11781
|
];
|
|
11604
11782
|
|
|
11605
11783
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -11671,6 +11849,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
11671
11849
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11672
11850
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11673
11851
|
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
11852
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED: MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11674
11853
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
11675
11854
|
'default': WebSocketClient
|
|
11676
11855
|
});
|
|
@@ -11768,7 +11947,7 @@ class SipRoom extends Room {
|
|
|
11768
11947
|
logger$3.info('connecting to sip room', { extension, audioOnly, room: !!room });
|
|
11769
11948
|
|
|
11770
11949
|
if (!room) {
|
|
11771
|
-
await Wazo.Phone.connect();
|
|
11950
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
11772
11951
|
|
|
11773
11952
|
const withCamera = constraints && !!constraints.video;
|
|
11774
11953
|
|
|
@@ -11914,6 +12093,7 @@ class Participant extends Emitter {
|
|
|
11914
12093
|
|
|
11915
12094
|
|
|
11916
12095
|
|
|
12096
|
+
|
|
11917
12097
|
|
|
11918
12098
|
|
|
11919
12099
|
|
|
@@ -11931,6 +12111,7 @@ class Participant extends Emitter {
|
|
|
11931
12111
|
|
|
11932
12112
|
|
|
11933
12113
|
|
|
12114
|
+
|
|
11934
12115
|
|
|
11935
12116
|
/**
|
|
11936
12117
|
* @param room Room The room where the participant is
|
|
@@ -11954,6 +12135,7 @@ class Participant extends Emitter {
|
|
|
11954
12135
|
this.screensharing = false;
|
|
11955
12136
|
this.isOnHold = false;
|
|
11956
12137
|
this.extra = extra;
|
|
12138
|
+
this.banned = false;
|
|
11957
12139
|
|
|
11958
12140
|
this.ON_UPDATED = 'participant/ON_UPDATED';
|
|
11959
12141
|
this.ON_START_TALKING = 'participant/ON_START_TALKING';
|
|
@@ -11970,6 +12152,7 @@ class Participant extends Emitter {
|
|
|
11970
12152
|
this.ON_EXTRA_CHANGE = 'participant/ON_EXTRA_CHANGE';
|
|
11971
12153
|
this.ON_HOLD = 'participant/ON_HOLD';
|
|
11972
12154
|
this.ON_RESUME = 'participant/ON_RESUME';
|
|
12155
|
+
this.ON_BAN = 'participant/ON_BAN';
|
|
11973
12156
|
}
|
|
11974
12157
|
|
|
11975
12158
|
triggerEvent(name , ...args ) {
|
|
@@ -12010,6 +12193,10 @@ class Participant extends Emitter {
|
|
|
12010
12193
|
status.extra = this.extra;
|
|
12011
12194
|
break;
|
|
12012
12195
|
}
|
|
12196
|
+
case this.ON_BAN: {
|
|
12197
|
+
status.banned = true;
|
|
12198
|
+
break;
|
|
12199
|
+
}
|
|
12013
12200
|
}
|
|
12014
12201
|
|
|
12015
12202
|
if (broadcast) {
|
|
@@ -12112,6 +12299,11 @@ class Participant extends Emitter {
|
|
|
12112
12299
|
this.triggerUpdate(this.ON_RESUME, broadcast);
|
|
12113
12300
|
}
|
|
12114
12301
|
|
|
12302
|
+
onBan(broadcast = true) {
|
|
12303
|
+
this.banned = true;
|
|
12304
|
+
this.triggerUpdate(this.ON_BAN, broadcast);
|
|
12305
|
+
}
|
|
12306
|
+
|
|
12115
12307
|
getStatus() {
|
|
12116
12308
|
return {
|
|
12117
12309
|
callId: this.callId,
|
|
@@ -12158,6 +12350,10 @@ class Participant extends Emitter {
|
|
|
12158
12350
|
}
|
|
12159
12351
|
}
|
|
12160
12352
|
|
|
12353
|
+
if (status.banned) {
|
|
12354
|
+
this.onBan(false);
|
|
12355
|
+
}
|
|
12356
|
+
|
|
12161
12357
|
// Poor man's object comparison
|
|
12162
12358
|
if (typeof status.extra !== 'undefined' && JSON.stringify(this.extra) !== JSON.stringify(status.extra)) {
|
|
12163
12359
|
this.extra = { ...this.extra, ...status.extra };
|
|
@@ -12185,6 +12381,28 @@ class Participant extends Emitter {
|
|
|
12185
12381
|
this.streams = streams;
|
|
12186
12382
|
this.videoStreams = streams;
|
|
12187
12383
|
}
|
|
12384
|
+
|
|
12385
|
+
async ban(apiRequestDelay = null) {
|
|
12386
|
+
const { meetingUuid } = this.room;
|
|
12387
|
+
if (!meetingUuid) {
|
|
12388
|
+
throw new Error('Attempting to ban a participant without a `meetingUuid`');
|
|
12389
|
+
}
|
|
12390
|
+
|
|
12391
|
+
// this notifies all that someone is being banned
|
|
12392
|
+
this.onBan(true);
|
|
12393
|
+
|
|
12394
|
+
// this allows to delay the actual ban, in order for the banned participant as well as others to react to the situation
|
|
12395
|
+
if (apiRequestDelay) {
|
|
12396
|
+
await this.delay(apiRequestDelay);
|
|
12397
|
+
}
|
|
12398
|
+
|
|
12399
|
+
// proceed with the actual kick
|
|
12400
|
+
return getApiClient().calld.banMeetingParticipant(meetingUuid, this.callId);
|
|
12401
|
+
}
|
|
12402
|
+
|
|
12403
|
+
async delay(ms ) {
|
|
12404
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
12405
|
+
}
|
|
12188
12406
|
}
|
|
12189
12407
|
|
|
12190
12408
|
//
|
|
@@ -13734,7 +13952,7 @@ class Room extends Emitter {
|
|
|
13734
13952
|
logger.info('connecting to room', { extension, audioOnly, room: !!room });
|
|
13735
13953
|
|
|
13736
13954
|
if (!room) {
|
|
13737
|
-
await Wazo.Phone.connect();
|
|
13955
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
13738
13956
|
|
|
13739
13957
|
const withCamera = constraints && !!constraints.video;
|
|
13740
13958
|
|
|
@@ -14179,7 +14397,7 @@ class Room extends Emitter {
|
|
|
14179
14397
|
const participant = this._getParticipantFromCallId(status.callId);
|
|
14180
14398
|
|
|
14181
14399
|
if (participant) {
|
|
14182
|
-
// we're
|
|
14400
|
+
// we're receiving, so no need to broadcast
|
|
14183
14401
|
participant.updateStatus(status, false);
|
|
14184
14402
|
}
|
|
14185
14403
|
break;
|