@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/index.js
CHANGED
|
@@ -2655,6 +2655,70 @@ class ExternalApp {
|
|
|
2655
2655
|
|
|
2656
2656
|
//
|
|
2657
2657
|
|
|
2658
|
+
class MeetingAuthorization {
|
|
2659
|
+
|
|
2660
|
+
|
|
2661
|
+
|
|
2662
|
+
|
|
2663
|
+
|
|
2664
|
+
|
|
2665
|
+
constructor({
|
|
2666
|
+
meetingUuid,
|
|
2667
|
+
uuid,
|
|
2668
|
+
userUuid,
|
|
2669
|
+
userName,
|
|
2670
|
+
} = {}) {
|
|
2671
|
+
this.meetingUuid = meetingUuid;
|
|
2672
|
+
this.uuid = uuid;
|
|
2673
|
+
this.userUuid = userUuid;
|
|
2674
|
+
this.userName = userName;
|
|
2675
|
+
}
|
|
2676
|
+
|
|
2677
|
+
setStatus(status ) {
|
|
2678
|
+
this.status = status;
|
|
2679
|
+
}
|
|
2680
|
+
|
|
2681
|
+
getStatus() {
|
|
2682
|
+
return this.status;
|
|
2683
|
+
}
|
|
2684
|
+
|
|
2685
|
+
static parse(plain ) {
|
|
2686
|
+
const {
|
|
2687
|
+
meeting_uuid: meetingUuid,
|
|
2688
|
+
uuid,
|
|
2689
|
+
guest_uuid: userUuid,
|
|
2690
|
+
guest_name: userName,
|
|
2691
|
+
} = plain;
|
|
2692
|
+
|
|
2693
|
+
return new MeetingAuthorization({
|
|
2694
|
+
meetingUuid,
|
|
2695
|
+
uuid,
|
|
2696
|
+
userUuid,
|
|
2697
|
+
userName,
|
|
2698
|
+
});
|
|
2699
|
+
}
|
|
2700
|
+
|
|
2701
|
+
static parseMany(items ) {
|
|
2702
|
+
if (!items) {
|
|
2703
|
+
return [];
|
|
2704
|
+
}
|
|
2705
|
+
return items.map(MeetingAuthorization.parse);
|
|
2706
|
+
}
|
|
2707
|
+
}
|
|
2708
|
+
|
|
2709
|
+
//
|
|
2710
|
+
|
|
2711
|
+
|
|
2712
|
+
|
|
2713
|
+
|
|
2714
|
+
|
|
2715
|
+
|
|
2716
|
+
|
|
2717
|
+
|
|
2718
|
+
|
|
2719
|
+
|
|
2720
|
+
|
|
2721
|
+
|
|
2658
2722
|
|
|
2659
2723
|
|
|
2660
2724
|
|
|
@@ -2665,6 +2729,7 @@ class ExternalApp {
|
|
|
2665
2729
|
|
|
2666
2730
|
|
|
2667
2731
|
|
|
2732
|
+
|
|
2668
2733
|
|
|
2669
2734
|
|
|
2670
2735
|
class Meeting {
|
|
@@ -2679,6 +2744,8 @@ class Meeting {
|
|
|
2679
2744
|
|
|
2680
2745
|
|
|
2681
2746
|
|
|
2747
|
+
|
|
2748
|
+
|
|
2682
2749
|
|
|
2683
2750
|
static parse(plain ) {
|
|
2684
2751
|
return new Meeting({
|
|
@@ -2691,6 +2758,7 @@ class Meeting {
|
|
|
2691
2758
|
extension: plain.exten,
|
|
2692
2759
|
persistent: plain.persistent,
|
|
2693
2760
|
creationTime: moment__default['default'](plain.creation_time).toDate(),
|
|
2761
|
+
requireAuthorization: plain.require_authorization,
|
|
2694
2762
|
});
|
|
2695
2763
|
}
|
|
2696
2764
|
|
|
@@ -2715,6 +2783,7 @@ class Meeting {
|
|
|
2715
2783
|
extension,
|
|
2716
2784
|
persistent,
|
|
2717
2785
|
creationTime,
|
|
2786
|
+
requireAuthorization,
|
|
2718
2787
|
} = {}) {
|
|
2719
2788
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2720
2789
|
this.uri = uri;
|
|
@@ -2725,6 +2794,7 @@ class Meeting {
|
|
|
2725
2794
|
this.extension = extension;
|
|
2726
2795
|
this.persistent = persistent;
|
|
2727
2796
|
this.creationTime = creationTime;
|
|
2797
|
+
this.requireAuthorization = requireAuthorization;
|
|
2728
2798
|
|
|
2729
2799
|
// Useful to compare instead of instanceof with minified code
|
|
2730
2800
|
this.type = 'Meeting';
|
|
@@ -2735,8 +2805,32 @@ class Meeting {
|
|
|
2735
2805
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
2736
2806
|
return { username, secret };
|
|
2737
2807
|
}
|
|
2808
|
+
|
|
2738
2809
|
}
|
|
2739
2810
|
|
|
2811
|
+
//
|
|
2812
|
+
|
|
2813
|
+
const camelToUnderscore = (key ) => {
|
|
2814
|
+
if (typeof key !== 'string') {
|
|
2815
|
+
throw new Error('Input is not a string');
|
|
2816
|
+
}
|
|
2817
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
2818
|
+
};
|
|
2819
|
+
|
|
2820
|
+
//
|
|
2821
|
+
|
|
2822
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
2823
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
2824
|
+
throw new Error('Input is not an object');
|
|
2825
|
+
}
|
|
2826
|
+
|
|
2827
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
2828
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
2829
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
2830
|
+
return acc;
|
|
2831
|
+
}, {});
|
|
2832
|
+
};
|
|
2833
|
+
|
|
2740
2834
|
/* */
|
|
2741
2835
|
|
|
2742
2836
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -2805,8 +2899,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2805
2899
|
getMyMeetings: () =>
|
|
2806
2900
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2807
2901
|
|
|
2808
|
-
createMyMeeting: (
|
|
2809
|
-
client
|
|
2902
|
+
createMyMeeting: (args ) =>
|
|
2903
|
+
client
|
|
2904
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
2905
|
+
.then(Meeting.parse),
|
|
2906
|
+
|
|
2907
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
2908
|
+
client.put(
|
|
2909
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
2910
|
+
convertKeysFromCamelToUnderscore(data),
|
|
2911
|
+
null,
|
|
2912
|
+
ApiRequester.successResponseParser,
|
|
2913
|
+
),
|
|
2810
2914
|
|
|
2811
2915
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2812
2916
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2814,8 +2918,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2814
2918
|
getMeeting: (meetingUuid ) =>
|
|
2815
2919
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2816
2920
|
|
|
2921
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
2922
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
2923
|
+
|
|
2924
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
2925
|
+
client.put(
|
|
2926
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
2927
|
+
{},
|
|
2928
|
+
null,
|
|
2929
|
+
ApiRequester.successResponseParser,
|
|
2930
|
+
),
|
|
2931
|
+
|
|
2932
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
2933
|
+
client.put(
|
|
2934
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
2935
|
+
{},
|
|
2936
|
+
null,
|
|
2937
|
+
ApiRequester.successResponseParser,
|
|
2938
|
+
),
|
|
2939
|
+
|
|
2817
2940
|
guestGetMeeting: (meetingUuid ) =>
|
|
2818
2941
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2942
|
+
|
|
2943
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
2944
|
+
client
|
|
2945
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
2946
|
+
.then(MeetingAuthorization.parse),
|
|
2947
|
+
|
|
2948
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
2949
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
2950
|
+
|
|
2819
2951
|
});
|
|
2820
2952
|
|
|
2821
2953
|
//
|
|
@@ -5066,6 +5198,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
5066
5198
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
5067
5199
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
5068
5200
|
|
|
5201
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
5202
|
+
client.delete(
|
|
5203
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
5204
|
+
null,
|
|
5205
|
+
null,
|
|
5206
|
+
ApiRequester.successResponseParser,
|
|
5207
|
+
),
|
|
5208
|
+
|
|
5069
5209
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
5070
5210
|
|
|
5071
5211
|
mute: (callId ) =>
|
|
@@ -6214,6 +6354,24 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
6214
6354
|
return fixed;
|
|
6215
6355
|
};
|
|
6216
6356
|
|
|
6357
|
+
const addIcesInAllBundles = (sdp ) => {
|
|
6358
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
6359
|
+
|
|
6360
|
+
const mediaWithCandidate = parsedSdp.media.find(media => !!media.candidates);
|
|
6361
|
+
if (!mediaWithCandidate) {
|
|
6362
|
+
return sdp;
|
|
6363
|
+
}
|
|
6364
|
+
|
|
6365
|
+
const { candidates } = mediaWithCandidate;
|
|
6366
|
+
|
|
6367
|
+
parsedSdp.media = parsedSdp.media.map(media => ({
|
|
6368
|
+
...media,
|
|
6369
|
+
candidates: media.candidates || candidates,
|
|
6370
|
+
}));
|
|
6371
|
+
|
|
6372
|
+
return sdpParser__default['default'].write(parsedSdp);
|
|
6373
|
+
};
|
|
6374
|
+
|
|
6217
6375
|
/* global RTCSessionDescriptionInit, navigator */
|
|
6218
6376
|
|
|
6219
6377
|
const wazoLogger = IssueReporter$1 ? IssueReporter$1.loggerFor('webrtc-sdh') : console;
|
|
@@ -6343,7 +6501,10 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
6343
6501
|
|
|
6344
6502
|
// Check if we got ICEs
|
|
6345
6503
|
if (sdp.indexOf('a=candidate') !== -1) {
|
|
6346
|
-
return
|
|
6504
|
+
return {
|
|
6505
|
+
type: description.type,
|
|
6506
|
+
sdp: addIcesInAllBundles(sdp),
|
|
6507
|
+
};
|
|
6347
6508
|
}
|
|
6348
6509
|
|
|
6349
6510
|
wazoLogger.info('No ICE candidates found in SDP, fixing it with gathered ices', this.gatheredCandidates);
|
|
@@ -7803,7 +7964,7 @@ class WebRTCClient extends Emitter {
|
|
|
7803
7964
|
});
|
|
7804
7965
|
}
|
|
7805
7966
|
|
|
7806
|
-
changeAudioInputDevice(id , session , force ) {
|
|
7967
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
7807
7968
|
const currentId = this.getAudioDeviceId();
|
|
7808
7969
|
logger$8.info('setting audio input device', { id, currentId, session: !!session });
|
|
7809
7970
|
|
|
@@ -7811,33 +7972,50 @@ class WebRTCClient extends Emitter {
|
|
|
7811
7972
|
return null;
|
|
7812
7973
|
}
|
|
7813
7974
|
|
|
7975
|
+
// in order to handle an audio track change for default devices
|
|
7976
|
+
// we need the actual id of the device (not 'default')
|
|
7977
|
+
let deviceId = id;
|
|
7978
|
+
if (id === 'default' && navigator.mediaDevices) {
|
|
7979
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
7980
|
+
const defaultDevice = devices.find(device => device.deviceId === 'default');
|
|
7981
|
+
if (defaultDevice) {
|
|
7982
|
+
const deviceLabel = defaultDevice.label.replace('Default - ', '');
|
|
7983
|
+
const targetDevice = devices.find(device => device.label === deviceLabel);
|
|
7984
|
+
if (targetDevice) {
|
|
7985
|
+
deviceId = targetDevice.deviceId;
|
|
7986
|
+
if (!force && deviceId === currentId) {
|
|
7987
|
+
return null;
|
|
7988
|
+
}
|
|
7989
|
+
}
|
|
7990
|
+
}
|
|
7991
|
+
}
|
|
7992
|
+
|
|
7814
7993
|
// let's update the local audio value
|
|
7815
7994
|
if (this.audio) {
|
|
7816
7995
|
this.audio = {
|
|
7817
7996
|
deviceId: {
|
|
7818
|
-
exact:
|
|
7997
|
+
exact: deviceId,
|
|
7819
7998
|
},
|
|
7820
7999
|
};
|
|
7821
8000
|
}
|
|
7822
8001
|
|
|
7823
|
-
if (session) {
|
|
8002
|
+
if (session && navigator.mediaDevices) {
|
|
7824
8003
|
const sdh = session.sessionDescriptionHandler;
|
|
7825
8004
|
const pc = sdh.peerConnection;
|
|
7826
8005
|
|
|
7827
|
-
|
|
7828
|
-
|
|
7829
|
-
|
|
7830
|
-
|
|
8006
|
+
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
8007
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
8008
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
8009
|
+
const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7831
8010
|
|
|
7832
|
-
|
|
7833
|
-
|
|
7834
|
-
|
|
7835
|
-
}
|
|
7836
|
-
sender.replaceTrack(audioTrack);
|
|
8011
|
+
if (sender) {
|
|
8012
|
+
if (sender.track) {
|
|
8013
|
+
audioTrack.enabled = sender.track.enabled;
|
|
7837
8014
|
}
|
|
8015
|
+
sender.replaceTrack(audioTrack);
|
|
8016
|
+
}
|
|
7838
8017
|
|
|
7839
|
-
|
|
7840
|
-
});
|
|
8018
|
+
return stream;
|
|
7841
8019
|
}
|
|
7842
8020
|
}
|
|
7843
8021
|
|
|
@@ -7857,14 +8035,14 @@ class WebRTCClient extends Emitter {
|
|
|
7857
8035
|
return null;
|
|
7858
8036
|
}
|
|
7859
8037
|
|
|
7860
|
-
// let's
|
|
7861
|
-
|
|
7862
|
-
|
|
7863
|
-
|
|
7864
|
-
|
|
7865
|
-
|
|
7866
|
-
}
|
|
7867
|
-
}
|
|
8038
|
+
// let's make sure we don't lose other video constraints settings -- width, height, frameRate...
|
|
8039
|
+
const videoObject = typeof this.video === 'object' ? this.video : {};
|
|
8040
|
+
this.video = {
|
|
8041
|
+
...videoObject,
|
|
8042
|
+
deviceId: {
|
|
8043
|
+
exact: id,
|
|
8044
|
+
},
|
|
8045
|
+
};
|
|
7868
8046
|
}
|
|
7869
8047
|
|
|
7870
8048
|
changeSessionVideoInputDevice(id , session ) {
|
|
@@ -9466,9 +9644,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9466
9644
|
|
|
9467
9645
|
try {
|
|
9468
9646
|
if (this.currentScreenShare.stream) {
|
|
9469
|
-
this.currentScreenShare.stream.getTracks()
|
|
9470
|
-
.filter(track => track.kind === 'video')
|
|
9471
|
-
.forEach(track => track.stop());
|
|
9647
|
+
this.currentScreenShare.stream.getTracks().forEach(track => track.stop());
|
|
9472
9648
|
}
|
|
9473
9649
|
|
|
9474
9650
|
if (restoreLocalStream) {
|
|
@@ -11259,6 +11435,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
11259
11435
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
11260
11436
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
11261
11437
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
11438
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
11262
11439
|
|
|
11263
11440
|
const BLACKLIST_EVENTS = [
|
|
11264
11441
|
CHAT_MESSAGE_SENT,
|
|
@@ -11610,6 +11787,7 @@ WebSocketClient.eventLists = [
|
|
|
11610
11787
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11611
11788
|
CONFERENCE_ADHOC_DELETED,
|
|
11612
11789
|
MEETING_USER_PROGRESS,
|
|
11790
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11613
11791
|
];
|
|
11614
11792
|
|
|
11615
11793
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -11681,6 +11859,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
11681
11859
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11682
11860
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11683
11861
|
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
11862
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED: MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11684
11863
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
11685
11864
|
'default': WebSocketClient
|
|
11686
11865
|
});
|
|
@@ -11785,6 +11964,7 @@ class Participant extends Emitter {
|
|
|
11785
11964
|
|
|
11786
11965
|
|
|
11787
11966
|
|
|
11967
|
+
|
|
11788
11968
|
|
|
11789
11969
|
|
|
11790
11970
|
|
|
@@ -11802,6 +11982,7 @@ class Participant extends Emitter {
|
|
|
11802
11982
|
|
|
11803
11983
|
|
|
11804
11984
|
|
|
11985
|
+
|
|
11805
11986
|
|
|
11806
11987
|
/**
|
|
11807
11988
|
* @param room Room The room where the participant is
|
|
@@ -11825,6 +12006,7 @@ class Participant extends Emitter {
|
|
|
11825
12006
|
this.screensharing = false;
|
|
11826
12007
|
this.isOnHold = false;
|
|
11827
12008
|
this.extra = extra;
|
|
12009
|
+
this.banned = false;
|
|
11828
12010
|
|
|
11829
12011
|
this.ON_UPDATED = 'participant/ON_UPDATED';
|
|
11830
12012
|
this.ON_START_TALKING = 'participant/ON_START_TALKING';
|
|
@@ -11841,6 +12023,7 @@ class Participant extends Emitter {
|
|
|
11841
12023
|
this.ON_EXTRA_CHANGE = 'participant/ON_EXTRA_CHANGE';
|
|
11842
12024
|
this.ON_HOLD = 'participant/ON_HOLD';
|
|
11843
12025
|
this.ON_RESUME = 'participant/ON_RESUME';
|
|
12026
|
+
this.ON_BAN = 'participant/ON_BAN';
|
|
11844
12027
|
}
|
|
11845
12028
|
|
|
11846
12029
|
triggerEvent(name , ...args ) {
|
|
@@ -11881,6 +12064,10 @@ class Participant extends Emitter {
|
|
|
11881
12064
|
status.extra = this.extra;
|
|
11882
12065
|
break;
|
|
11883
12066
|
}
|
|
12067
|
+
case this.ON_BAN: {
|
|
12068
|
+
status.banned = true;
|
|
12069
|
+
break;
|
|
12070
|
+
}
|
|
11884
12071
|
}
|
|
11885
12072
|
|
|
11886
12073
|
if (broadcast) {
|
|
@@ -11983,6 +12170,11 @@ class Participant extends Emitter {
|
|
|
11983
12170
|
this.triggerUpdate(this.ON_RESUME, broadcast);
|
|
11984
12171
|
}
|
|
11985
12172
|
|
|
12173
|
+
onBan(broadcast = true) {
|
|
12174
|
+
this.banned = true;
|
|
12175
|
+
this.triggerUpdate(this.ON_BAN, broadcast);
|
|
12176
|
+
}
|
|
12177
|
+
|
|
11986
12178
|
getStatus() {
|
|
11987
12179
|
return {
|
|
11988
12180
|
callId: this.callId,
|
|
@@ -12029,6 +12221,10 @@ class Participant extends Emitter {
|
|
|
12029
12221
|
}
|
|
12030
12222
|
}
|
|
12031
12223
|
|
|
12224
|
+
if (status.banned) {
|
|
12225
|
+
this.onBan(false);
|
|
12226
|
+
}
|
|
12227
|
+
|
|
12032
12228
|
// Poor man's object comparison
|
|
12033
12229
|
if (typeof status.extra !== 'undefined' && JSON.stringify(this.extra) !== JSON.stringify(status.extra)) {
|
|
12034
12230
|
this.extra = { ...this.extra, ...status.extra };
|
|
@@ -12056,6 +12252,28 @@ class Participant extends Emitter {
|
|
|
12056
12252
|
this.streams = streams;
|
|
12057
12253
|
this.videoStreams = streams;
|
|
12058
12254
|
}
|
|
12255
|
+
|
|
12256
|
+
async ban(apiRequestDelay = null) {
|
|
12257
|
+
const { meetingUuid } = this.room;
|
|
12258
|
+
if (!meetingUuid) {
|
|
12259
|
+
throw new Error('Attempting to ban a participant without a `meetingUuid`');
|
|
12260
|
+
}
|
|
12261
|
+
|
|
12262
|
+
// this notifies all that someone is being banned
|
|
12263
|
+
this.onBan(true);
|
|
12264
|
+
|
|
12265
|
+
// this allows to delay the actual ban, in order for the banned participant as well as others to react to the situation
|
|
12266
|
+
if (apiRequestDelay) {
|
|
12267
|
+
await this.delay(apiRequestDelay);
|
|
12268
|
+
}
|
|
12269
|
+
|
|
12270
|
+
// proceed with the actual kick
|
|
12271
|
+
return getApiClient().calld.banMeetingParticipant(meetingUuid, this.callId);
|
|
12272
|
+
}
|
|
12273
|
+
|
|
12274
|
+
async delay(ms ) {
|
|
12275
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
12276
|
+
}
|
|
12059
12277
|
}
|
|
12060
12278
|
|
|
12061
12279
|
//
|
|
@@ -12208,7 +12426,7 @@ class Room$1 extends Emitter {
|
|
|
12208
12426
|
logger$2.info('connecting to room', { extension, audioOnly, room: !!room });
|
|
12209
12427
|
|
|
12210
12428
|
if (!room) {
|
|
12211
|
-
await Wazo.Phone.connect();
|
|
12429
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
12212
12430
|
|
|
12213
12431
|
const withCamera = constraints && !!constraints.video;
|
|
12214
12432
|
|
|
@@ -12653,7 +12871,7 @@ class Room$1 extends Emitter {
|
|
|
12653
12871
|
const participant = this._getParticipantFromCallId(status.callId);
|
|
12654
12872
|
|
|
12655
12873
|
if (participant) {
|
|
12656
|
-
// we're
|
|
12874
|
+
// we're receiving, so no need to broadcast
|
|
12657
12875
|
participant.updateStatus(status, false);
|
|
12658
12876
|
}
|
|
12659
12877
|
break;
|
|
@@ -12920,7 +13138,7 @@ class SipRoom extends Room$1 {
|
|
|
12920
13138
|
logger$1.info('connecting to sip room', { extension, audioOnly, room: !!room });
|
|
12921
13139
|
|
|
12922
13140
|
if (!room) {
|
|
12923
|
-
await Wazo.Phone.connect();
|
|
13141
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
12924
13142
|
|
|
12925
13143
|
const withCamera = constraints && !!constraints.video;
|
|
12926
13144
|
|