@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
package/esm/checker/Checker.js
CHANGED
|
@@ -2227,6 +2227,7 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2227
2227
|
|
|
2228
2228
|
|
|
2229
2229
|
|
|
2230
|
+
|
|
2230
2231
|
) {
|
|
2231
2232
|
const body = {
|
|
2232
2233
|
backend: params.backend || DEFAULT_BACKEND_USER,
|
|
@@ -2247,9 +2248,14 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2247
2248
|
}
|
|
2248
2249
|
|
|
2249
2250
|
if (params.tenantId) {
|
|
2251
|
+
console.warn('Use of `tenantId` is deprecated when calling logIn() method, use `domainName` instead.');
|
|
2250
2252
|
body.tenant_id = params.tenantId;
|
|
2251
2253
|
}
|
|
2252
2254
|
|
|
2255
|
+
if (params.domainName) {
|
|
2256
|
+
body.domain_name = params.domainName;
|
|
2257
|
+
}
|
|
2258
|
+
|
|
2253
2259
|
return client.post(`${baseUrl}/token`, body, headers).then(response => Session.parse(response));
|
|
2254
2260
|
},
|
|
2255
2261
|
|
|
@@ -2262,6 +2268,7 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2262
2268
|
expiration ,
|
|
2263
2269
|
isMobile = false,
|
|
2264
2270
|
tenantId ,
|
|
2271
|
+
domainName ,
|
|
2265
2272
|
) => {
|
|
2266
2273
|
const body = {
|
|
2267
2274
|
backend: backend || DEFAULT_BACKEND_USER,
|
|
@@ -2271,9 +2278,14 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2271
2278
|
};
|
|
2272
2279
|
|
|
2273
2280
|
if (tenantId) {
|
|
2281
|
+
console.warn('Use of `tenantId` is deprecated when calling refreshToken() method, use `domainName` instead.');
|
|
2274
2282
|
body.tenant_id = tenantId;
|
|
2275
2283
|
}
|
|
2276
2284
|
|
|
2285
|
+
if (domainName) {
|
|
2286
|
+
body.domain_name = domainName;
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2277
2289
|
const headers = {
|
|
2278
2290
|
'Content-Type': 'application/json',
|
|
2279
2291
|
...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
|
|
@@ -2643,6 +2655,70 @@ class ExternalApp {
|
|
|
2643
2655
|
|
|
2644
2656
|
//
|
|
2645
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
|
+
|
|
2646
2722
|
|
|
2647
2723
|
|
|
2648
2724
|
|
|
@@ -2653,6 +2729,7 @@ class ExternalApp {
|
|
|
2653
2729
|
|
|
2654
2730
|
|
|
2655
2731
|
|
|
2732
|
+
|
|
2656
2733
|
|
|
2657
2734
|
|
|
2658
2735
|
class Meeting {
|
|
@@ -2667,6 +2744,8 @@ class Meeting {
|
|
|
2667
2744
|
|
|
2668
2745
|
|
|
2669
2746
|
|
|
2747
|
+
|
|
2748
|
+
|
|
2670
2749
|
|
|
2671
2750
|
static parse(plain ) {
|
|
2672
2751
|
return new Meeting({
|
|
@@ -2679,6 +2758,7 @@ class Meeting {
|
|
|
2679
2758
|
extension: plain.exten,
|
|
2680
2759
|
persistent: plain.persistent,
|
|
2681
2760
|
creationTime: moment(plain.creation_time).toDate(),
|
|
2761
|
+
requireAuthorization: plain.require_authorization,
|
|
2682
2762
|
});
|
|
2683
2763
|
}
|
|
2684
2764
|
|
|
@@ -2703,6 +2783,7 @@ class Meeting {
|
|
|
2703
2783
|
extension,
|
|
2704
2784
|
persistent,
|
|
2705
2785
|
creationTime,
|
|
2786
|
+
requireAuthorization,
|
|
2706
2787
|
} = {}) {
|
|
2707
2788
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2708
2789
|
this.uri = uri;
|
|
@@ -2713,6 +2794,7 @@ class Meeting {
|
|
|
2713
2794
|
this.extension = extension;
|
|
2714
2795
|
this.persistent = persistent;
|
|
2715
2796
|
this.creationTime = creationTime;
|
|
2797
|
+
this.requireAuthorization = requireAuthorization;
|
|
2716
2798
|
|
|
2717
2799
|
// Useful to compare instead of instanceof with minified code
|
|
2718
2800
|
this.type = 'Meeting';
|
|
@@ -2723,8 +2805,32 @@ class Meeting {
|
|
|
2723
2805
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
2724
2806
|
return { username, secret };
|
|
2725
2807
|
}
|
|
2808
|
+
|
|
2726
2809
|
}
|
|
2727
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
|
+
|
|
2728
2834
|
/* */
|
|
2729
2835
|
|
|
2730
2836
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -2793,8 +2899,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2793
2899
|
getMyMeetings: () =>
|
|
2794
2900
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2795
2901
|
|
|
2796
|
-
createMyMeeting: (
|
|
2797
|
-
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
|
+
),
|
|
2798
2914
|
|
|
2799
2915
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2800
2916
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2802,8 +2918,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2802
2918
|
getMeeting: (meetingUuid ) =>
|
|
2803
2919
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2804
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
|
+
|
|
2805
2940
|
guestGetMeeting: (meetingUuid ) =>
|
|
2806
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
|
+
|
|
2807
2951
|
});
|
|
2808
2952
|
|
|
2809
2953
|
//
|
|
@@ -3594,6 +3738,7 @@ global.wazoClientId = global.wazoClientId || {};
|
|
|
3594
3738
|
global.wazoClientToken = global.wazoClientToken || {};
|
|
3595
3739
|
global.wazoRefreshToken = global.wazoRefreshToken || {};
|
|
3596
3740
|
global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
|
|
3741
|
+
global.wazoRefreshDomainName = global.wazoRefreshDomainName || {};
|
|
3597
3742
|
global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
|
|
3598
3743
|
global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
|
|
3599
3744
|
global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
|
|
@@ -4268,6 +4413,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4268
4413
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
4269
4414
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
4270
4415
|
|
|
4416
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
4417
|
+
client.delete(
|
|
4418
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
4419
|
+
null,
|
|
4420
|
+
null,
|
|
4421
|
+
ApiRequester.successResponseParser,
|
|
4422
|
+
),
|
|
4423
|
+
|
|
4271
4424
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
4272
4425
|
|
|
4273
4426
|
mute: (callId ) =>
|
|
@@ -4645,6 +4798,7 @@ class ApiClient {
|
|
|
4645
4798
|
|
|
4646
4799
|
|
|
4647
4800
|
|
|
4801
|
+
|
|
4648
4802
|
|
|
4649
4803
|
|
|
4650
4804
|
|
|
@@ -4686,6 +4840,7 @@ class ApiClient {
|
|
|
4686
4840
|
refreshToken: this.refreshToken,
|
|
4687
4841
|
refreshBackend: this.refreshBackend,
|
|
4688
4842
|
refreshTenantId: this.refreshTenantId,
|
|
4843
|
+
refreshDomainName: this.refreshDomainName,
|
|
4689
4844
|
refreshExpiration: this.refreshExpiration,
|
|
4690
4845
|
isMobile: this.isMobile,
|
|
4691
4846
|
});
|
|
@@ -4701,6 +4856,7 @@ class ApiClient {
|
|
|
4701
4856
|
this.refreshExpiration,
|
|
4702
4857
|
this.isMobile,
|
|
4703
4858
|
this.refreshTenantId,
|
|
4859
|
+
this.refreshDomainName,
|
|
4704
4860
|
);
|
|
4705
4861
|
|
|
4706
4862
|
logger$3.info('token refreshed', { token: session.token });
|
|
@@ -4754,9 +4910,14 @@ class ApiClient {
|
|
|
4754
4910
|
}
|
|
4755
4911
|
|
|
4756
4912
|
setRefreshTenantId(tenantId ) {
|
|
4913
|
+
console.warn('Use of `setRefreshTenantId` is deprecated, use `setRefreshDomainName` instead');
|
|
4757
4914
|
this.refreshTenantId = tenantId;
|
|
4758
4915
|
}
|
|
4759
4916
|
|
|
4917
|
+
setRefreshDomainName(domainName ) {
|
|
4918
|
+
this.refreshDomainName = domainName;
|
|
4919
|
+
}
|
|
4920
|
+
|
|
4760
4921
|
setIsMobile(isMobile ) {
|
|
4761
4922
|
this.isMobile = isMobile;
|
|
4762
4923
|
}
|
|
@@ -5059,6 +5220,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
5059
5220
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
5060
5221
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
5061
5222
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
5223
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
5062
5224
|
|
|
5063
5225
|
const BLACKLIST_EVENTS = [
|
|
5064
5226
|
CHAT_MESSAGE_SENT,
|
|
@@ -5410,6 +5572,7 @@ WebSocketClient.eventLists = [
|
|
|
5410
5572
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
5411
5573
|
CONFERENCE_ADHOC_DELETED,
|
|
5412
5574
|
MEETING_USER_PROGRESS,
|
|
5575
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
5413
5576
|
];
|
|
5414
5577
|
|
|
5415
5578
|
var wazoWebsocket = {
|
|
@@ -7026,7 +7189,7 @@ class WebRTCClient extends Emitter {
|
|
|
7026
7189
|
});
|
|
7027
7190
|
}
|
|
7028
7191
|
|
|
7029
|
-
changeAudioInputDevice(id , session , force ) {
|
|
7192
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
7030
7193
|
const currentId = this.getAudioDeviceId();
|
|
7031
7194
|
logger$1.info('setting audio input device', { id, currentId, session: !!session });
|
|
7032
7195
|
|
|
@@ -7034,33 +7197,50 @@ class WebRTCClient extends Emitter {
|
|
|
7034
7197
|
return null;
|
|
7035
7198
|
}
|
|
7036
7199
|
|
|
7200
|
+
// in order to handle an audio track change for default devices
|
|
7201
|
+
// we need the actual id of the device (not 'default')
|
|
7202
|
+
let deviceId = id;
|
|
7203
|
+
if (id === 'default' && navigator.mediaDevices) {
|
|
7204
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
7205
|
+
const defaultDevice = devices.find(device => device.deviceId === 'default');
|
|
7206
|
+
if (defaultDevice) {
|
|
7207
|
+
const deviceLabel = defaultDevice.label.replace('Default - ', '');
|
|
7208
|
+
const targetDevice = devices.find(device => device.label === deviceLabel);
|
|
7209
|
+
if (targetDevice) {
|
|
7210
|
+
deviceId = targetDevice.deviceId;
|
|
7211
|
+
if (!force && deviceId === currentId) {
|
|
7212
|
+
return null;
|
|
7213
|
+
}
|
|
7214
|
+
}
|
|
7215
|
+
}
|
|
7216
|
+
}
|
|
7217
|
+
|
|
7037
7218
|
// let's update the local audio value
|
|
7038
7219
|
if (this.audio) {
|
|
7039
7220
|
this.audio = {
|
|
7040
7221
|
deviceId: {
|
|
7041
|
-
exact:
|
|
7222
|
+
exact: deviceId,
|
|
7042
7223
|
},
|
|
7043
7224
|
};
|
|
7044
7225
|
}
|
|
7045
7226
|
|
|
7046
|
-
if (session) {
|
|
7227
|
+
if (session && navigator.mediaDevices) {
|
|
7047
7228
|
const sdh = session.sessionDescriptionHandler;
|
|
7048
7229
|
const pc = sdh.peerConnection;
|
|
7049
7230
|
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7231
|
+
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7232
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7233
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
7234
|
+
const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7054
7235
|
|
|
7055
|
-
|
|
7056
|
-
|
|
7057
|
-
|
|
7058
|
-
}
|
|
7059
|
-
sender.replaceTrack(audioTrack);
|
|
7236
|
+
if (sender) {
|
|
7237
|
+
if (sender.track) {
|
|
7238
|
+
audioTrack.enabled = sender.track.enabled;
|
|
7060
7239
|
}
|
|
7240
|
+
sender.replaceTrack(audioTrack);
|
|
7241
|
+
}
|
|
7061
7242
|
|
|
7062
|
-
|
|
7063
|
-
});
|
|
7243
|
+
return stream;
|
|
7064
7244
|
}
|
|
7065
7245
|
}
|
|
7066
7246
|
|
|
@@ -7080,14 +7260,14 @@ class WebRTCClient extends Emitter {
|
|
|
7080
7260
|
return null;
|
|
7081
7261
|
}
|
|
7082
7262
|
|
|
7083
|
-
// let's
|
|
7084
|
-
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
|
|
7089
|
-
}
|
|
7090
|
-
}
|
|
7263
|
+
// let's make sure we don't lose other video constraints settings -- width, height, frameRate...
|
|
7264
|
+
const videoObject = typeof this.video === 'object' ? this.video : {};
|
|
7265
|
+
this.video = {
|
|
7266
|
+
...videoObject,
|
|
7267
|
+
deviceId: {
|
|
7268
|
+
exact: id,
|
|
7269
|
+
},
|
|
7270
|
+
};
|
|
7091
7271
|
}
|
|
7092
7272
|
|
|
7093
7273
|
changeSessionVideoInputDevice(id , session ) {
|