@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
|
@@ -2625,6 +2625,70 @@ class ExternalApp {
|
|
|
2625
2625
|
|
|
2626
2626
|
//
|
|
2627
2627
|
|
|
2628
|
+
class MeetingAuthorization {
|
|
2629
|
+
|
|
2630
|
+
|
|
2631
|
+
|
|
2632
|
+
|
|
2633
|
+
|
|
2634
|
+
|
|
2635
|
+
constructor({
|
|
2636
|
+
meetingUuid,
|
|
2637
|
+
uuid,
|
|
2638
|
+
userUuid,
|
|
2639
|
+
userName,
|
|
2640
|
+
} = {}) {
|
|
2641
|
+
this.meetingUuid = meetingUuid;
|
|
2642
|
+
this.uuid = uuid;
|
|
2643
|
+
this.userUuid = userUuid;
|
|
2644
|
+
this.userName = userName;
|
|
2645
|
+
}
|
|
2646
|
+
|
|
2647
|
+
setStatus(status ) {
|
|
2648
|
+
this.status = status;
|
|
2649
|
+
}
|
|
2650
|
+
|
|
2651
|
+
getStatus() {
|
|
2652
|
+
return this.status;
|
|
2653
|
+
}
|
|
2654
|
+
|
|
2655
|
+
static parse(plain ) {
|
|
2656
|
+
const {
|
|
2657
|
+
meeting_uuid: meetingUuid,
|
|
2658
|
+
uuid,
|
|
2659
|
+
guest_uuid: userUuid,
|
|
2660
|
+
guest_name: userName,
|
|
2661
|
+
} = plain;
|
|
2662
|
+
|
|
2663
|
+
return new MeetingAuthorization({
|
|
2664
|
+
meetingUuid,
|
|
2665
|
+
uuid,
|
|
2666
|
+
userUuid,
|
|
2667
|
+
userName,
|
|
2668
|
+
});
|
|
2669
|
+
}
|
|
2670
|
+
|
|
2671
|
+
static parseMany(items ) {
|
|
2672
|
+
if (!items) {
|
|
2673
|
+
return [];
|
|
2674
|
+
}
|
|
2675
|
+
return items.map(MeetingAuthorization.parse);
|
|
2676
|
+
}
|
|
2677
|
+
}
|
|
2678
|
+
|
|
2679
|
+
//
|
|
2680
|
+
|
|
2681
|
+
|
|
2682
|
+
|
|
2683
|
+
|
|
2684
|
+
|
|
2685
|
+
|
|
2686
|
+
|
|
2687
|
+
|
|
2688
|
+
|
|
2689
|
+
|
|
2690
|
+
|
|
2691
|
+
|
|
2628
2692
|
|
|
2629
2693
|
|
|
2630
2694
|
|
|
@@ -2635,6 +2699,7 @@ class ExternalApp {
|
|
|
2635
2699
|
|
|
2636
2700
|
|
|
2637
2701
|
|
|
2702
|
+
|
|
2638
2703
|
|
|
2639
2704
|
|
|
2640
2705
|
class Meeting {
|
|
@@ -2649,6 +2714,8 @@ class Meeting {
|
|
|
2649
2714
|
|
|
2650
2715
|
|
|
2651
2716
|
|
|
2717
|
+
|
|
2718
|
+
|
|
2652
2719
|
|
|
2653
2720
|
static parse(plain ) {
|
|
2654
2721
|
return new Meeting({
|
|
@@ -2661,6 +2728,7 @@ class Meeting {
|
|
|
2661
2728
|
extension: plain.exten,
|
|
2662
2729
|
persistent: plain.persistent,
|
|
2663
2730
|
creationTime: moment(plain.creation_time).toDate(),
|
|
2731
|
+
requireAuthorization: plain.require_authorization,
|
|
2664
2732
|
});
|
|
2665
2733
|
}
|
|
2666
2734
|
|
|
@@ -2685,6 +2753,7 @@ class Meeting {
|
|
|
2685
2753
|
extension,
|
|
2686
2754
|
persistent,
|
|
2687
2755
|
creationTime,
|
|
2756
|
+
requireAuthorization,
|
|
2688
2757
|
} = {}) {
|
|
2689
2758
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2690
2759
|
this.uri = uri;
|
|
@@ -2695,6 +2764,7 @@ class Meeting {
|
|
|
2695
2764
|
this.extension = extension;
|
|
2696
2765
|
this.persistent = persistent;
|
|
2697
2766
|
this.creationTime = creationTime;
|
|
2767
|
+
this.requireAuthorization = requireAuthorization;
|
|
2698
2768
|
|
|
2699
2769
|
// Useful to compare instead of instanceof with minified code
|
|
2700
2770
|
this.type = 'Meeting';
|
|
@@ -2705,8 +2775,32 @@ class Meeting {
|
|
|
2705
2775
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
2706
2776
|
return { username, secret };
|
|
2707
2777
|
}
|
|
2778
|
+
|
|
2708
2779
|
}
|
|
2709
2780
|
|
|
2781
|
+
//
|
|
2782
|
+
|
|
2783
|
+
const camelToUnderscore = (key ) => {
|
|
2784
|
+
if (typeof key !== 'string') {
|
|
2785
|
+
throw new Error('Input is not a string');
|
|
2786
|
+
}
|
|
2787
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
2788
|
+
};
|
|
2789
|
+
|
|
2790
|
+
//
|
|
2791
|
+
|
|
2792
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
2793
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
2794
|
+
throw new Error('Input is not an object');
|
|
2795
|
+
}
|
|
2796
|
+
|
|
2797
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
2798
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
2799
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
2800
|
+
return acc;
|
|
2801
|
+
}, {});
|
|
2802
|
+
};
|
|
2803
|
+
|
|
2710
2804
|
/* */
|
|
2711
2805
|
|
|
2712
2806
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -2775,8 +2869,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2775
2869
|
getMyMeetings: () =>
|
|
2776
2870
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2777
2871
|
|
|
2778
|
-
createMyMeeting: (
|
|
2779
|
-
client
|
|
2872
|
+
createMyMeeting: (args ) =>
|
|
2873
|
+
client
|
|
2874
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
2875
|
+
.then(Meeting.parse),
|
|
2876
|
+
|
|
2877
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
2878
|
+
client.put(
|
|
2879
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
2880
|
+
convertKeysFromCamelToUnderscore(data),
|
|
2881
|
+
null,
|
|
2882
|
+
ApiRequester.successResponseParser,
|
|
2883
|
+
),
|
|
2780
2884
|
|
|
2781
2885
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2782
2886
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2784,8 +2888,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2784
2888
|
getMeeting: (meetingUuid ) =>
|
|
2785
2889
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2786
2890
|
|
|
2891
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
2892
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
2893
|
+
|
|
2894
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
2895
|
+
client.put(
|
|
2896
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
2897
|
+
{},
|
|
2898
|
+
null,
|
|
2899
|
+
ApiRequester.successResponseParser,
|
|
2900
|
+
),
|
|
2901
|
+
|
|
2902
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
2903
|
+
client.put(
|
|
2904
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
2905
|
+
{},
|
|
2906
|
+
null,
|
|
2907
|
+
ApiRequester.successResponseParser,
|
|
2908
|
+
),
|
|
2909
|
+
|
|
2787
2910
|
guestGetMeeting: (meetingUuid ) =>
|
|
2788
2911
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2912
|
+
|
|
2913
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
2914
|
+
client
|
|
2915
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
2916
|
+
.then(MeetingAuthorization.parse),
|
|
2917
|
+
|
|
2918
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
2919
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
2920
|
+
|
|
2789
2921
|
});
|
|
2790
2922
|
|
|
2791
2923
|
//
|
|
@@ -4224,6 +4356,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4224
4356
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
4225
4357
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
4226
4358
|
|
|
4359
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
4360
|
+
client.delete(
|
|
4361
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
4362
|
+
null,
|
|
4363
|
+
null,
|
|
4364
|
+
ApiRequester.successResponseParser,
|
|
4365
|
+
),
|
|
4366
|
+
|
|
4227
4367
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
4228
4368
|
|
|
4229
4369
|
mute: (callId ) =>
|
|
@@ -2643,6 +2643,70 @@ class ExternalApp {
|
|
|
2643
2643
|
|
|
2644
2644
|
//
|
|
2645
2645
|
|
|
2646
|
+
class MeetingAuthorization {
|
|
2647
|
+
|
|
2648
|
+
|
|
2649
|
+
|
|
2650
|
+
|
|
2651
|
+
|
|
2652
|
+
|
|
2653
|
+
constructor({
|
|
2654
|
+
meetingUuid,
|
|
2655
|
+
uuid,
|
|
2656
|
+
userUuid,
|
|
2657
|
+
userName,
|
|
2658
|
+
} = {}) {
|
|
2659
|
+
this.meetingUuid = meetingUuid;
|
|
2660
|
+
this.uuid = uuid;
|
|
2661
|
+
this.userUuid = userUuid;
|
|
2662
|
+
this.userName = userName;
|
|
2663
|
+
}
|
|
2664
|
+
|
|
2665
|
+
setStatus(status ) {
|
|
2666
|
+
this.status = status;
|
|
2667
|
+
}
|
|
2668
|
+
|
|
2669
|
+
getStatus() {
|
|
2670
|
+
return this.status;
|
|
2671
|
+
}
|
|
2672
|
+
|
|
2673
|
+
static parse(plain ) {
|
|
2674
|
+
const {
|
|
2675
|
+
meeting_uuid: meetingUuid,
|
|
2676
|
+
uuid,
|
|
2677
|
+
guest_uuid: userUuid,
|
|
2678
|
+
guest_name: userName,
|
|
2679
|
+
} = plain;
|
|
2680
|
+
|
|
2681
|
+
return new MeetingAuthorization({
|
|
2682
|
+
meetingUuid,
|
|
2683
|
+
uuid,
|
|
2684
|
+
userUuid,
|
|
2685
|
+
userName,
|
|
2686
|
+
});
|
|
2687
|
+
}
|
|
2688
|
+
|
|
2689
|
+
static parseMany(items ) {
|
|
2690
|
+
if (!items) {
|
|
2691
|
+
return [];
|
|
2692
|
+
}
|
|
2693
|
+
return items.map(MeetingAuthorization.parse);
|
|
2694
|
+
}
|
|
2695
|
+
}
|
|
2696
|
+
|
|
2697
|
+
//
|
|
2698
|
+
|
|
2699
|
+
|
|
2700
|
+
|
|
2701
|
+
|
|
2702
|
+
|
|
2703
|
+
|
|
2704
|
+
|
|
2705
|
+
|
|
2706
|
+
|
|
2707
|
+
|
|
2708
|
+
|
|
2709
|
+
|
|
2646
2710
|
|
|
2647
2711
|
|
|
2648
2712
|
|
|
@@ -2653,6 +2717,7 @@ class ExternalApp {
|
|
|
2653
2717
|
|
|
2654
2718
|
|
|
2655
2719
|
|
|
2720
|
+
|
|
2656
2721
|
|
|
2657
2722
|
|
|
2658
2723
|
class Meeting {
|
|
@@ -2667,6 +2732,8 @@ class Meeting {
|
|
|
2667
2732
|
|
|
2668
2733
|
|
|
2669
2734
|
|
|
2735
|
+
|
|
2736
|
+
|
|
2670
2737
|
|
|
2671
2738
|
static parse(plain ) {
|
|
2672
2739
|
return new Meeting({
|
|
@@ -2679,6 +2746,7 @@ class Meeting {
|
|
|
2679
2746
|
extension: plain.exten,
|
|
2680
2747
|
persistent: plain.persistent,
|
|
2681
2748
|
creationTime: moment(plain.creation_time).toDate(),
|
|
2749
|
+
requireAuthorization: plain.require_authorization,
|
|
2682
2750
|
});
|
|
2683
2751
|
}
|
|
2684
2752
|
|
|
@@ -2703,6 +2771,7 @@ class Meeting {
|
|
|
2703
2771
|
extension,
|
|
2704
2772
|
persistent,
|
|
2705
2773
|
creationTime,
|
|
2774
|
+
requireAuthorization,
|
|
2706
2775
|
} = {}) {
|
|
2707
2776
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2708
2777
|
this.uri = uri;
|
|
@@ -2713,6 +2782,7 @@ class Meeting {
|
|
|
2713
2782
|
this.extension = extension;
|
|
2714
2783
|
this.persistent = persistent;
|
|
2715
2784
|
this.creationTime = creationTime;
|
|
2785
|
+
this.requireAuthorization = requireAuthorization;
|
|
2716
2786
|
|
|
2717
2787
|
// Useful to compare instead of instanceof with minified code
|
|
2718
2788
|
this.type = 'Meeting';
|
|
@@ -2723,8 +2793,32 @@ class Meeting {
|
|
|
2723
2793
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
2724
2794
|
return { username, secret };
|
|
2725
2795
|
}
|
|
2796
|
+
|
|
2726
2797
|
}
|
|
2727
2798
|
|
|
2799
|
+
//
|
|
2800
|
+
|
|
2801
|
+
const camelToUnderscore = (key ) => {
|
|
2802
|
+
if (typeof key !== 'string') {
|
|
2803
|
+
throw new Error('Input is not a string');
|
|
2804
|
+
}
|
|
2805
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
2806
|
+
};
|
|
2807
|
+
|
|
2808
|
+
//
|
|
2809
|
+
|
|
2810
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
2811
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
2812
|
+
throw new Error('Input is not an object');
|
|
2813
|
+
}
|
|
2814
|
+
|
|
2815
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
2816
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
2817
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
2818
|
+
return acc;
|
|
2819
|
+
}, {});
|
|
2820
|
+
};
|
|
2821
|
+
|
|
2728
2822
|
/* */
|
|
2729
2823
|
|
|
2730
2824
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -2793,8 +2887,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2793
2887
|
getMyMeetings: () =>
|
|
2794
2888
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2795
2889
|
|
|
2796
|
-
createMyMeeting: (
|
|
2797
|
-
client
|
|
2890
|
+
createMyMeeting: (args ) =>
|
|
2891
|
+
client
|
|
2892
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
2893
|
+
.then(Meeting.parse),
|
|
2894
|
+
|
|
2895
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
2896
|
+
client.put(
|
|
2897
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
2898
|
+
convertKeysFromCamelToUnderscore(data),
|
|
2899
|
+
null,
|
|
2900
|
+
ApiRequester.successResponseParser,
|
|
2901
|
+
),
|
|
2798
2902
|
|
|
2799
2903
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2800
2904
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2802,8 +2906,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2802
2906
|
getMeeting: (meetingUuid ) =>
|
|
2803
2907
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2804
2908
|
|
|
2909
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
2910
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
2911
|
+
|
|
2912
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
2913
|
+
client.put(
|
|
2914
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
2915
|
+
{},
|
|
2916
|
+
null,
|
|
2917
|
+
ApiRequester.successResponseParser,
|
|
2918
|
+
),
|
|
2919
|
+
|
|
2920
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
2921
|
+
client.put(
|
|
2922
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
2923
|
+
{},
|
|
2924
|
+
null,
|
|
2925
|
+
ApiRequester.successResponseParser,
|
|
2926
|
+
),
|
|
2927
|
+
|
|
2805
2928
|
guestGetMeeting: (meetingUuid ) =>
|
|
2806
2929
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
2930
|
+
|
|
2931
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
2932
|
+
client
|
|
2933
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
2934
|
+
.then(MeetingAuthorization.parse),
|
|
2935
|
+
|
|
2936
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
2937
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
2938
|
+
|
|
2807
2939
|
});
|
|
2808
2940
|
|
|
2809
2941
|
//
|
|
@@ -4268,6 +4400,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4268
4400
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
4269
4401
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
4270
4402
|
|
|
4403
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
4404
|
+
client.delete(
|
|
4405
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
4406
|
+
null,
|
|
4407
|
+
null,
|
|
4408
|
+
ApiRequester.successResponseParser,
|
|
4409
|
+
),
|
|
4410
|
+
|
|
4271
4411
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
4272
4412
|
|
|
4273
4413
|
mute: (callId ) =>
|
|
@@ -5059,6 +5199,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
5059
5199
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
5060
5200
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
5061
5201
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
5202
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
5062
5203
|
|
|
5063
5204
|
const BLACKLIST_EVENTS = [
|
|
5064
5205
|
CHAT_MESSAGE_SENT,
|
|
@@ -5410,6 +5551,7 @@ WebSocketClient.eventLists = [
|
|
|
5410
5551
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
5411
5552
|
CONFERENCE_ADHOC_DELETED,
|
|
5412
5553
|
MEETING_USER_PROGRESS,
|
|
5554
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
5413
5555
|
];
|
|
5414
5556
|
|
|
5415
5557
|
var wazoWebsocket = {
|
|
@@ -5514,6 +5656,24 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5514
5656
|
return fixed;
|
|
5515
5657
|
};
|
|
5516
5658
|
|
|
5659
|
+
const addIcesInAllBundles = (sdp ) => {
|
|
5660
|
+
const parsedSdp = sdpParser.parse(sdp);
|
|
5661
|
+
|
|
5662
|
+
const mediaWithCandidate = parsedSdp.media.find(media => !!media.candidates);
|
|
5663
|
+
if (!mediaWithCandidate) {
|
|
5664
|
+
return sdp;
|
|
5665
|
+
}
|
|
5666
|
+
|
|
5667
|
+
const { candidates } = mediaWithCandidate;
|
|
5668
|
+
|
|
5669
|
+
parsedSdp.media = parsedSdp.media.map(media => ({
|
|
5670
|
+
...media,
|
|
5671
|
+
candidates: media.candidates || candidates,
|
|
5672
|
+
}));
|
|
5673
|
+
|
|
5674
|
+
return sdpParser.write(parsedSdp);
|
|
5675
|
+
};
|
|
5676
|
+
|
|
5517
5677
|
/* global RTCSessionDescriptionInit, navigator */
|
|
5518
5678
|
|
|
5519
5679
|
const wazoLogger = IssueReporter$1 ? IssueReporter$1.loggerFor('webrtc-sdh') : console;
|
|
@@ -5643,7 +5803,10 @@ class WazoSessionDescriptionHandler extends SessionDescriptionHandler {
|
|
|
5643
5803
|
|
|
5644
5804
|
// Check if we got ICEs
|
|
5645
5805
|
if (sdp.indexOf('a=candidate') !== -1) {
|
|
5646
|
-
return
|
|
5806
|
+
return {
|
|
5807
|
+
type: description.type,
|
|
5808
|
+
sdp: addIcesInAllBundles(sdp),
|
|
5809
|
+
};
|
|
5647
5810
|
}
|
|
5648
5811
|
|
|
5649
5812
|
wazoLogger.info('No ICE candidates found in SDP, fixing it with gathered ices', this.gatheredCandidates);
|
|
@@ -7005,7 +7168,7 @@ class WebRTCClient extends Emitter {
|
|
|
7005
7168
|
});
|
|
7006
7169
|
}
|
|
7007
7170
|
|
|
7008
|
-
changeAudioInputDevice(id , session , force ) {
|
|
7171
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
7009
7172
|
const currentId = this.getAudioDeviceId();
|
|
7010
7173
|
logger.info('setting audio input device', { id, currentId, session: !!session });
|
|
7011
7174
|
|
|
@@ -7013,33 +7176,50 @@ class WebRTCClient extends Emitter {
|
|
|
7013
7176
|
return null;
|
|
7014
7177
|
}
|
|
7015
7178
|
|
|
7179
|
+
// in order to handle an audio track change for default devices
|
|
7180
|
+
// we need the actual id of the device (not 'default')
|
|
7181
|
+
let deviceId = id;
|
|
7182
|
+
if (id === 'default' && navigator.mediaDevices) {
|
|
7183
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
7184
|
+
const defaultDevice = devices.find(device => device.deviceId === 'default');
|
|
7185
|
+
if (defaultDevice) {
|
|
7186
|
+
const deviceLabel = defaultDevice.label.replace('Default - ', '');
|
|
7187
|
+
const targetDevice = devices.find(device => device.label === deviceLabel);
|
|
7188
|
+
if (targetDevice) {
|
|
7189
|
+
deviceId = targetDevice.deviceId;
|
|
7190
|
+
if (!force && deviceId === currentId) {
|
|
7191
|
+
return null;
|
|
7192
|
+
}
|
|
7193
|
+
}
|
|
7194
|
+
}
|
|
7195
|
+
}
|
|
7196
|
+
|
|
7016
7197
|
// let's update the local audio value
|
|
7017
7198
|
if (this.audio) {
|
|
7018
7199
|
this.audio = {
|
|
7019
7200
|
deviceId: {
|
|
7020
|
-
exact:
|
|
7201
|
+
exact: deviceId,
|
|
7021
7202
|
},
|
|
7022
7203
|
};
|
|
7023
7204
|
}
|
|
7024
7205
|
|
|
7025
|
-
if (session) {
|
|
7206
|
+
if (session && navigator.mediaDevices) {
|
|
7026
7207
|
const sdh = session.sessionDescriptionHandler;
|
|
7027
7208
|
const pc = sdh.peerConnection;
|
|
7028
7209
|
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
|
|
7210
|
+
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7211
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7212
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
7213
|
+
const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7033
7214
|
|
|
7034
|
-
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
}
|
|
7038
|
-
sender.replaceTrack(audioTrack);
|
|
7215
|
+
if (sender) {
|
|
7216
|
+
if (sender.track) {
|
|
7217
|
+
audioTrack.enabled = sender.track.enabled;
|
|
7039
7218
|
}
|
|
7219
|
+
sender.replaceTrack(audioTrack);
|
|
7220
|
+
}
|
|
7040
7221
|
|
|
7041
|
-
|
|
7042
|
-
});
|
|
7222
|
+
return stream;
|
|
7043
7223
|
}
|
|
7044
7224
|
}
|
|
7045
7225
|
|
|
@@ -7059,14 +7239,14 @@ class WebRTCClient extends Emitter {
|
|
|
7059
7239
|
return null;
|
|
7060
7240
|
}
|
|
7061
7241
|
|
|
7062
|
-
// let's
|
|
7063
|
-
|
|
7064
|
-
|
|
7065
|
-
|
|
7066
|
-
|
|
7067
|
-
|
|
7068
|
-
}
|
|
7069
|
-
}
|
|
7242
|
+
// let's make sure we don't lose other video constraints settings -- width, height, frameRate...
|
|
7243
|
+
const videoObject = typeof this.video === 'object' ? this.video : {};
|
|
7244
|
+
this.video = {
|
|
7245
|
+
...videoObject,
|
|
7246
|
+
deviceId: {
|
|
7247
|
+
exact: id,
|
|
7248
|
+
},
|
|
7249
|
+
};
|
|
7070
7250
|
}
|
|
7071
7251
|
|
|
7072
7252
|
changeSessionVideoInputDevice(id , session ) {
|
|
@@ -607,6 +607,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
607
607
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
608
608
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
609
609
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
610
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
610
611
|
|
|
611
612
|
const BLACKLIST_EVENTS = [
|
|
612
613
|
CHAT_MESSAGE_SENT,
|
|
@@ -958,6 +959,7 @@ WebSocketClient.eventLists = [
|
|
|
958
959
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
959
960
|
CONFERENCE_ADHOC_DELETED,
|
|
960
961
|
MEETING_USER_PROGRESS,
|
|
962
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
961
963
|
];
|
|
962
964
|
|
|
963
965
|
var wazoWebsocket = {
|