@wazo/sdk 0.38.7 → 0.38.10
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 +163 -2
- package/esm/__tests__/web-rtc-client.test.js +248 -27
- package/esm/api/auth.js +12 -0
- package/esm/api/calld.js +8 -0
- package/esm/api/confd.js +134 -2
- package/esm/api/ctid-ng.js +1 -0
- package/esm/api-client.js +163 -2
- package/esm/checker/Checker.js +204 -24
- package/esm/checker/checks/aor.js +163 -2
- package/esm/checker/checks/api.js +163 -2
- package/esm/checker/checks/index.js +204 -24
- package/esm/checker/checks/wazo-websocket.js +2 -0
- package/esm/checker/checks/webrtc-transport.js +202 -24
- package/esm/checker/checks/webrtc.js +202 -24
- package/esm/domain/AdHocAPIConference.js +170 -4
- package/esm/domain/Features.js +170 -4
- package/esm/domain/Meeting.js +18 -0
- package/esm/domain/MeetingAuthorization.js +70 -0
- package/esm/domain/Phone/CTIPhone.js +170 -4
- package/esm/domain/Phone/WebRTCPhone.js +2 -3
- package/esm/domain/__tests__/Meeting.test.js +87 -1
- package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
- package/esm/index.js +300 -36
- package/esm/service/CallApi.js +170 -4
- package/esm/service/getApiClient.js +176 -5
- package/esm/simple/Auth.js +301 -37
- package/esm/simple/Configuration.js +300 -36
- package/esm/simple/Directory.js +170 -4
- package/esm/simple/Phone.js +300 -36
- package/esm/simple/Softphone.js +5 -0
- package/esm/simple/Websocket.js +3 -0
- package/esm/simple/index.js +300 -36
- package/esm/simple/room/LocalParticipant.js +300 -36
- package/esm/simple/room/Participant.js +300 -36
- package/esm/simple/room/RemoteParticipant.js +300 -36
- package/esm/simple/room/Room.js +300 -36
- package/esm/simple/room/SipRoom.js +300 -36
- package/esm/simple/room/Stream.js +300 -36
- package/esm/simple/room/__tests__/Participant.test.js +14812 -0
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +300 -36
- package/esm/simple/utils.js +300 -36
- package/esm/utils/__tests__/object.test.js +57 -0
- package/esm/utils/__tests__/string.test.js +30 -0
- package/esm/utils/object.js +24 -0
- package/esm/utils/string.js +10 -0
- package/esm/web-rtc-client.js +202 -24
- package/esm/websocket-client.js +3 -1
- package/lib/__tests__/api-client.test.js +163 -2
- package/lib/__tests__/web-rtc-client.test.js +248 -27
- package/lib/api/auth.js +12 -0
- package/lib/api/calld.js +8 -0
- package/lib/api/confd.js +134 -2
- package/lib/api/ctid-ng.js +1 -0
- package/lib/api-client.js +163 -2
- package/lib/checker/Checker.js +204 -24
- package/lib/checker/checks/aor.js +163 -2
- package/lib/checker/checks/api.js +163 -2
- package/lib/checker/checks/index.js +204 -24
- package/lib/checker/checks/wazo-websocket.js +2 -0
- package/lib/checker/checks/webrtc-transport.js +202 -24
- package/lib/checker/checks/webrtc.js +202 -24
- package/lib/domain/AdHocAPIConference.js +170 -4
- package/lib/domain/Features.js +170 -4
- package/lib/domain/Meeting.js +18 -0
- package/lib/domain/MeetingAuthorization.js +79 -0
- package/lib/domain/Phone/CTIPhone.js +170 -4
- package/lib/domain/Phone/WebRTCPhone.js +2 -3
- package/lib/domain/__tests__/Meeting.test.js +87 -1
- package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
- package/lib/index.js +300 -36
- package/lib/service/CallApi.js +170 -4
- package/lib/service/getApiClient.js +176 -4
- package/lib/simple/Auth.js +301 -36
- package/lib/simple/Configuration.js +300 -36
- package/lib/simple/Directory.js +170 -4
- package/lib/simple/Phone.js +300 -36
- package/lib/simple/Softphone.js +5 -0
- package/lib/simple/Websocket.js +3 -0
- package/lib/simple/index.js +300 -36
- package/lib/simple/room/LocalParticipant.js +300 -36
- package/lib/simple/room/Participant.js +300 -36
- package/lib/simple/room/RemoteParticipant.js +300 -36
- package/lib/simple/room/Room.js +300 -36
- package/lib/simple/room/SipRoom.js +300 -36
- package/lib/simple/room/Stream.js +300 -36
- package/lib/simple/room/__tests__/Participant.test.js +14822 -0
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +300 -36
- package/lib/simple/utils.js +300 -36
- package/lib/utils/__tests__/object.test.js +59 -0
- package/lib/utils/__tests__/string.test.js +32 -0
- package/lib/utils/object.js +28 -0
- package/lib/utils/string.js +14 -0
- package/lib/web-rtc-client.js +202 -24
- package/lib/websocket-client.js +3 -0
- package/package.json +1 -1
- package/src/__tests__/web-rtc-client.test.js +46 -3
- package/src/api/auth.js +12 -0
- package/src/api/calld.js +8 -0
- package/src/api/confd.js +43 -2
- package/src/api-client.js +8 -0
- 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/service/getApiClient.js +13 -2
- package/src/simple/Auth.js +35 -4
- package/src/simple/Softphone.js +5 -0
- package/src/simple/index.js +2 -1
- 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__/string.test.js +23 -0
- package/src/utils/object.js +15 -0
- package/src/utils/string.js +8 -0
- package/src/web-rtc-client.js +39 -22
- package/src/websocket-client.js +2 -0
|
@@ -2237,6 +2237,7 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2237
2237
|
|
|
2238
2238
|
|
|
2239
2239
|
|
|
2240
|
+
|
|
2240
2241
|
) {
|
|
2241
2242
|
const body = {
|
|
2242
2243
|
backend: params.backend || DEFAULT_BACKEND_USER,
|
|
@@ -2257,9 +2258,14 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2257
2258
|
}
|
|
2258
2259
|
|
|
2259
2260
|
if (params.tenantId) {
|
|
2261
|
+
console.warn('Use of `tenantId` is deprecated when calling logIn() method, use `domainName` instead.');
|
|
2260
2262
|
body.tenant_id = params.tenantId;
|
|
2261
2263
|
}
|
|
2262
2264
|
|
|
2265
|
+
if (params.domainName) {
|
|
2266
|
+
body.domain_name = params.domainName;
|
|
2267
|
+
}
|
|
2268
|
+
|
|
2263
2269
|
return client.post(`${baseUrl}/token`, body, headers).then(response => Session.parse(response));
|
|
2264
2270
|
},
|
|
2265
2271
|
|
|
@@ -2272,6 +2278,7 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2272
2278
|
expiration ,
|
|
2273
2279
|
isMobile = false,
|
|
2274
2280
|
tenantId ,
|
|
2281
|
+
domainName ,
|
|
2275
2282
|
) => {
|
|
2276
2283
|
const body = {
|
|
2277
2284
|
backend: backend || DEFAULT_BACKEND_USER,
|
|
@@ -2281,9 +2288,14 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2281
2288
|
};
|
|
2282
2289
|
|
|
2283
2290
|
if (tenantId) {
|
|
2291
|
+
console.warn('Use of `tenantId` is deprecated when calling refreshToken() method, use `domainName` instead.');
|
|
2284
2292
|
body.tenant_id = tenantId;
|
|
2285
2293
|
}
|
|
2286
2294
|
|
|
2295
|
+
if (domainName) {
|
|
2296
|
+
body.domain_name = domainName;
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2287
2299
|
const headers = {
|
|
2288
2300
|
'Content-Type': 'application/json',
|
|
2289
2301
|
...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
|
|
@@ -2653,6 +2665,70 @@ class ExternalApp {
|
|
|
2653
2665
|
|
|
2654
2666
|
//
|
|
2655
2667
|
|
|
2668
|
+
class MeetingAuthorization {
|
|
2669
|
+
|
|
2670
|
+
|
|
2671
|
+
|
|
2672
|
+
|
|
2673
|
+
|
|
2674
|
+
|
|
2675
|
+
constructor({
|
|
2676
|
+
meetingUuid,
|
|
2677
|
+
uuid,
|
|
2678
|
+
userUuid,
|
|
2679
|
+
userName,
|
|
2680
|
+
} = {}) {
|
|
2681
|
+
this.meetingUuid = meetingUuid;
|
|
2682
|
+
this.uuid = uuid;
|
|
2683
|
+
this.userUuid = userUuid;
|
|
2684
|
+
this.userName = userName;
|
|
2685
|
+
}
|
|
2686
|
+
|
|
2687
|
+
setStatus(status ) {
|
|
2688
|
+
this.status = status;
|
|
2689
|
+
}
|
|
2690
|
+
|
|
2691
|
+
getStatus() {
|
|
2692
|
+
return this.status;
|
|
2693
|
+
}
|
|
2694
|
+
|
|
2695
|
+
static parse(plain ) {
|
|
2696
|
+
const {
|
|
2697
|
+
meeting_uuid: meetingUuid,
|
|
2698
|
+
uuid,
|
|
2699
|
+
guest_uuid: userUuid,
|
|
2700
|
+
guest_name: userName,
|
|
2701
|
+
} = plain;
|
|
2702
|
+
|
|
2703
|
+
return new MeetingAuthorization({
|
|
2704
|
+
meetingUuid,
|
|
2705
|
+
uuid,
|
|
2706
|
+
userUuid,
|
|
2707
|
+
userName,
|
|
2708
|
+
});
|
|
2709
|
+
}
|
|
2710
|
+
|
|
2711
|
+
static parseMany(items ) {
|
|
2712
|
+
if (!items) {
|
|
2713
|
+
return [];
|
|
2714
|
+
}
|
|
2715
|
+
return items.map(MeetingAuthorization.parse);
|
|
2716
|
+
}
|
|
2717
|
+
}
|
|
2718
|
+
|
|
2719
|
+
//
|
|
2720
|
+
|
|
2721
|
+
|
|
2722
|
+
|
|
2723
|
+
|
|
2724
|
+
|
|
2725
|
+
|
|
2726
|
+
|
|
2727
|
+
|
|
2728
|
+
|
|
2729
|
+
|
|
2730
|
+
|
|
2731
|
+
|
|
2656
2732
|
|
|
2657
2733
|
|
|
2658
2734
|
|
|
@@ -2663,6 +2739,7 @@ class ExternalApp {
|
|
|
2663
2739
|
|
|
2664
2740
|
|
|
2665
2741
|
|
|
2742
|
+
|
|
2666
2743
|
|
|
2667
2744
|
|
|
2668
2745
|
class Meeting {
|
|
@@ -2677,6 +2754,8 @@ class Meeting {
|
|
|
2677
2754
|
|
|
2678
2755
|
|
|
2679
2756
|
|
|
2757
|
+
|
|
2758
|
+
|
|
2680
2759
|
|
|
2681
2760
|
static parse(plain ) {
|
|
2682
2761
|
return new Meeting({
|
|
@@ -2689,6 +2768,7 @@ class Meeting {
|
|
|
2689
2768
|
extension: plain.exten,
|
|
2690
2769
|
persistent: plain.persistent,
|
|
2691
2770
|
creationTime: moment__default['default'](plain.creation_time).toDate(),
|
|
2771
|
+
requireAuthorization: plain.require_authorization,
|
|
2692
2772
|
});
|
|
2693
2773
|
}
|
|
2694
2774
|
|
|
@@ -2713,6 +2793,7 @@ class Meeting {
|
|
|
2713
2793
|
extension,
|
|
2714
2794
|
persistent,
|
|
2715
2795
|
creationTime,
|
|
2796
|
+
requireAuthorization,
|
|
2716
2797
|
} = {}) {
|
|
2717
2798
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2718
2799
|
this.uri = uri;
|
|
@@ -2723,6 +2804,7 @@ class Meeting {
|
|
|
2723
2804
|
this.extension = extension;
|
|
2724
2805
|
this.persistent = persistent;
|
|
2725
2806
|
this.creationTime = creationTime;
|
|
2807
|
+
this.requireAuthorization = requireAuthorization;
|
|
2726
2808
|
|
|
2727
2809
|
// Useful to compare instead of instanceof with minified code
|
|
2728
2810
|
this.type = 'Meeting';
|
|
@@ -2733,8 +2815,32 @@ class Meeting {
|
|
|
2733
2815
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
2734
2816
|
return { username, secret };
|
|
2735
2817
|
}
|
|
2818
|
+
|
|
2736
2819
|
}
|
|
2737
2820
|
|
|
2821
|
+
//
|
|
2822
|
+
|
|
2823
|
+
const camelToUnderscore = (key ) => {
|
|
2824
|
+
if (typeof key !== 'string') {
|
|
2825
|
+
throw new Error('Input is not a string');
|
|
2826
|
+
}
|
|
2827
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
2828
|
+
};
|
|
2829
|
+
|
|
2830
|
+
//
|
|
2831
|
+
|
|
2832
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
2833
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
2834
|
+
throw new Error('Input is not an object');
|
|
2835
|
+
}
|
|
2836
|
+
|
|
2837
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
2838
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
2839
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
2840
|
+
return acc;
|
|
2841
|
+
}, {});
|
|
2842
|
+
};
|
|
2843
|
+
|
|
2738
2844
|
/* */
|
|
2739
2845
|
|
|
2740
2846
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -2803,8 +2909,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2803
2909
|
getMyMeetings: () =>
|
|
2804
2910
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2805
2911
|
|
|
2806
|
-
createMyMeeting: (
|
|
2807
|
-
client
|
|
2912
|
+
createMyMeeting: (args ) =>
|
|
2913
|
+
client
|
|
2914
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
2915
|
+
.then(Meeting.parse),
|
|
2916
|
+
|
|
2917
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
2918
|
+
client.put(
|
|
2919
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
2920
|
+
convertKeysFromCamelToUnderscore(data),
|
|
2921
|
+
null,
|
|
2922
|
+
ApiRequester.successResponseParser,
|
|
2923
|
+
),
|
|
2808
2924
|
|
|
2809
2925
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2810
2926
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2812,8 +2928,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2812
2928
|
getMeeting: (meetingUuid ) =>
|
|
2813
2929
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2814
2930
|
|
|
2931
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
2932
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
2933
|
+
|
|
2934
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
2935
|
+
client.put(
|
|
2936
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
2937
|
+
{},
|
|
2938
|
+
null,
|
|
2939
|
+
ApiRequester.successResponseParser,
|
|
2940
|
+
),
|
|
2941
|
+
|
|
2942
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
2943
|
+
client.put(
|
|
2944
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
2945
|
+
{},
|
|
2946
|
+
null,
|
|
2947
|
+
ApiRequester.successResponseParser,
|
|
2948
|
+
),
|
|
2949
|
+
|
|
2815
2950
|
guestGetMeeting: (meetingUuid ) =>
|
|
2816
2951
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2952
|
+
|
|
2953
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
2954
|
+
client
|
|
2955
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
2956
|
+
.then(MeetingAuthorization.parse),
|
|
2957
|
+
|
|
2958
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
2959
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
2960
|
+
|
|
2817
2961
|
});
|
|
2818
2962
|
|
|
2819
2963
|
//
|
|
@@ -3604,6 +3748,7 @@ global.wazoClientId = global.wazoClientId || {};
|
|
|
3604
3748
|
global.wazoClientToken = global.wazoClientToken || {};
|
|
3605
3749
|
global.wazoRefreshToken = global.wazoRefreshToken || {};
|
|
3606
3750
|
global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
|
|
3751
|
+
global.wazoRefreshDomainName = global.wazoRefreshDomainName || {};
|
|
3607
3752
|
global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
|
|
3608
3753
|
global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
|
|
3609
3754
|
global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
|
|
@@ -4278,6 +4423,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4278
4423
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
4279
4424
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
4280
4425
|
|
|
4426
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
4427
|
+
client.delete(
|
|
4428
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
4429
|
+
null,
|
|
4430
|
+
null,
|
|
4431
|
+
ApiRequester.successResponseParser,
|
|
4432
|
+
),
|
|
4433
|
+
|
|
4281
4434
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
4282
4435
|
|
|
4283
4436
|
mute: (callId ) =>
|
|
@@ -4655,6 +4808,7 @@ class ApiClient {
|
|
|
4655
4808
|
|
|
4656
4809
|
|
|
4657
4810
|
|
|
4811
|
+
|
|
4658
4812
|
|
|
4659
4813
|
|
|
4660
4814
|
|
|
@@ -4696,6 +4850,7 @@ class ApiClient {
|
|
|
4696
4850
|
refreshToken: this.refreshToken,
|
|
4697
4851
|
refreshBackend: this.refreshBackend,
|
|
4698
4852
|
refreshTenantId: this.refreshTenantId,
|
|
4853
|
+
refreshDomainName: this.refreshDomainName,
|
|
4699
4854
|
refreshExpiration: this.refreshExpiration,
|
|
4700
4855
|
isMobile: this.isMobile,
|
|
4701
4856
|
});
|
|
@@ -4711,6 +4866,7 @@ class ApiClient {
|
|
|
4711
4866
|
this.refreshExpiration,
|
|
4712
4867
|
this.isMobile,
|
|
4713
4868
|
this.refreshTenantId,
|
|
4869
|
+
this.refreshDomainName,
|
|
4714
4870
|
);
|
|
4715
4871
|
|
|
4716
4872
|
logger$2.info('token refreshed', { token: session.token });
|
|
@@ -4764,9 +4920,14 @@ class ApiClient {
|
|
|
4764
4920
|
}
|
|
4765
4921
|
|
|
4766
4922
|
setRefreshTenantId(tenantId ) {
|
|
4923
|
+
console.warn('Use of `setRefreshTenantId` is deprecated, use `setRefreshDomainName` instead');
|
|
4767
4924
|
this.refreshTenantId = tenantId;
|
|
4768
4925
|
}
|
|
4769
4926
|
|
|
4927
|
+
setRefreshDomainName(domainName ) {
|
|
4928
|
+
this.refreshDomainName = domainName;
|
|
4929
|
+
}
|
|
4930
|
+
|
|
4770
4931
|
setIsMobile(isMobile ) {
|
|
4771
4932
|
this.isMobile = isMobile;
|
|
4772
4933
|
}
|
|
@@ -5069,6 +5230,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
5069
5230
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
5070
5231
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
5071
5232
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
5233
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
5072
5234
|
|
|
5073
5235
|
const BLACKLIST_EVENTS = [
|
|
5074
5236
|
CHAT_MESSAGE_SENT,
|
|
@@ -5420,6 +5582,7 @@ WebSocketClient.eventLists = [
|
|
|
5420
5582
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
5421
5583
|
CONFERENCE_ADHOC_DELETED,
|
|
5422
5584
|
MEETING_USER_PROGRESS,
|
|
5585
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
5423
5586
|
];
|
|
5424
5587
|
|
|
5425
5588
|
var wazoWebsocket = {
|
|
@@ -7036,7 +7199,7 @@ class WebRTCClient extends Emitter {
|
|
|
7036
7199
|
});
|
|
7037
7200
|
}
|
|
7038
7201
|
|
|
7039
|
-
changeAudioInputDevice(id , session , force ) {
|
|
7202
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
7040
7203
|
const currentId = this.getAudioDeviceId();
|
|
7041
7204
|
logger.info('setting audio input device', { id, currentId, session: !!session });
|
|
7042
7205
|
|
|
@@ -7044,33 +7207,50 @@ class WebRTCClient extends Emitter {
|
|
|
7044
7207
|
return null;
|
|
7045
7208
|
}
|
|
7046
7209
|
|
|
7210
|
+
// in order to handle an audio track change for default devices
|
|
7211
|
+
// we need the actual id of the device (not 'default')
|
|
7212
|
+
let deviceId = id;
|
|
7213
|
+
if (id === 'default' && navigator.mediaDevices) {
|
|
7214
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
7215
|
+
const defaultDevice = devices.find(device => device.deviceId === 'default');
|
|
7216
|
+
if (defaultDevice) {
|
|
7217
|
+
const deviceLabel = defaultDevice.label.replace('Default - ', '');
|
|
7218
|
+
const targetDevice = devices.find(device => device.label === deviceLabel);
|
|
7219
|
+
if (targetDevice) {
|
|
7220
|
+
deviceId = targetDevice.deviceId;
|
|
7221
|
+
if (!force && deviceId === currentId) {
|
|
7222
|
+
return null;
|
|
7223
|
+
}
|
|
7224
|
+
}
|
|
7225
|
+
}
|
|
7226
|
+
}
|
|
7227
|
+
|
|
7047
7228
|
// let's update the local audio value
|
|
7048
7229
|
if (this.audio) {
|
|
7049
7230
|
this.audio = {
|
|
7050
7231
|
deviceId: {
|
|
7051
|
-
exact:
|
|
7232
|
+
exact: deviceId,
|
|
7052
7233
|
},
|
|
7053
7234
|
};
|
|
7054
7235
|
}
|
|
7055
7236
|
|
|
7056
|
-
if (session) {
|
|
7237
|
+
if (session && navigator.mediaDevices) {
|
|
7057
7238
|
const sdh = session.sessionDescriptionHandler;
|
|
7058
7239
|
const pc = sdh.peerConnection;
|
|
7059
7240
|
|
|
7060
|
-
|
|
7061
|
-
|
|
7062
|
-
|
|
7063
|
-
|
|
7241
|
+
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7242
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7243
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
7244
|
+
const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7064
7245
|
|
|
7065
|
-
|
|
7066
|
-
|
|
7067
|
-
|
|
7068
|
-
}
|
|
7069
|
-
sender.replaceTrack(audioTrack);
|
|
7246
|
+
if (sender) {
|
|
7247
|
+
if (sender.track) {
|
|
7248
|
+
audioTrack.enabled = sender.track.enabled;
|
|
7070
7249
|
}
|
|
7250
|
+
sender.replaceTrack(audioTrack);
|
|
7251
|
+
}
|
|
7071
7252
|
|
|
7072
|
-
|
|
7073
|
-
});
|
|
7253
|
+
return stream;
|
|
7074
7254
|
}
|
|
7075
7255
|
}
|
|
7076
7256
|
|
|
@@ -7090,14 +7270,14 @@ class WebRTCClient extends Emitter {
|
|
|
7090
7270
|
return null;
|
|
7091
7271
|
}
|
|
7092
7272
|
|
|
7093
|
-
// let's
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
|
|
7097
|
-
|
|
7098
|
-
|
|
7099
|
-
}
|
|
7100
|
-
}
|
|
7273
|
+
// let's make sure we don't lose other video constraints settings -- width, height, frameRate...
|
|
7274
|
+
const videoObject = typeof this.video === 'object' ? this.video : {};
|
|
7275
|
+
this.video = {
|
|
7276
|
+
...videoObject,
|
|
7277
|
+
deviceId: {
|
|
7278
|
+
exact: id,
|
|
7279
|
+
},
|
|
7280
|
+
};
|
|
7101
7281
|
}
|
|
7102
7282
|
|
|
7103
7283
|
changeSessionVideoInputDevice(id , session ) {
|
|
@@ -615,6 +615,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
615
615
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
616
616
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
617
617
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
618
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
618
619
|
|
|
619
620
|
const BLACKLIST_EVENTS = [
|
|
620
621
|
CHAT_MESSAGE_SENT,
|
|
@@ -966,6 +967,7 @@ WebSocketClient.eventLists = [
|
|
|
966
967
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
967
968
|
CONFERENCE_ADHOC_DELETED,
|
|
968
969
|
MEETING_USER_PROGRESS,
|
|
970
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
969
971
|
];
|
|
970
972
|
|
|
971
973
|
var wazoWebsocket = {
|