@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
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//
|
|
2
|
+
|
|
3
|
+
const camelToUnderscore = (key ) => {
|
|
4
|
+
if (typeof key !== 'string') {
|
|
5
|
+
throw new Error('Input is not a string');
|
|
6
|
+
}
|
|
7
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
//
|
|
11
|
+
|
|
12
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
13
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
14
|
+
throw new Error('Input is not an object');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
18
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
19
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
20
|
+
return acc;
|
|
21
|
+
}, {});
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
//
|
|
25
|
+
|
|
26
|
+
describe('object utils', () => {
|
|
27
|
+
describe('convertKeysFromCamelToUnderscore', () => {
|
|
28
|
+
it('should throw an error when input is not an object', () => {
|
|
29
|
+
const msg = 'Input is not an object';
|
|
30
|
+
expect(() => convertKeysFromCamelToUnderscore(true)).toThrow(msg);
|
|
31
|
+
expect(() => convertKeysFromCamelToUnderscore(null)).toThrow(msg);
|
|
32
|
+
expect(() => convertKeysFromCamelToUnderscore(undefined)).toThrow(msg);
|
|
33
|
+
expect(() => convertKeysFromCamelToUnderscore([])).toThrow(msg);
|
|
34
|
+
expect(() => convertKeysFromCamelToUnderscore('some-string')).toThrow(msg);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('should convert camel-cased keys to underscore', () => {
|
|
38
|
+
let value = Math.random();
|
|
39
|
+
expect(convertKeysFromCamelToUnderscore({ LoremIpsum: value })).toEqual({ lorem_ipsum: value });
|
|
40
|
+
value = Math.random();
|
|
41
|
+
expect(convertKeysFromCamelToUnderscore({ loremIpsum: value })).toEqual({ lorem_ipsum: value });
|
|
42
|
+
value = Math.random();
|
|
43
|
+
expect(convertKeysFromCamelToUnderscore({ 'lorem-ipsum': value })).toEqual({ 'lorem-ipsum': value });
|
|
44
|
+
value = Math.random();
|
|
45
|
+
expect(convertKeysFromCamelToUnderscore({ L123: value })).toEqual({ l123: value });
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('should handle multi-leveled object', () => {
|
|
49
|
+
const value = Math.random();
|
|
50
|
+
expect(convertKeysFromCamelToUnderscore({ LoremIpsum: { DoloreSit: { Amet: value }, regular: 'reg' } }))
|
|
51
|
+
.toEqual({ lorem_ipsum: { dolore_sit: { amet: value }, regular: 'reg' } });
|
|
52
|
+
|
|
53
|
+
expect(convertKeysFromCamelToUnderscore({ LoremIpsum: { DoloreSit: { Amet: [value] }, regular: ['something'] } }))
|
|
54
|
+
.toEqual({ lorem_ipsum: { dolore_sit: { amet: [value] }, regular: ['something'] } });
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//
|
|
2
|
+
|
|
3
|
+
const camelToUnderscore = (key ) => {
|
|
4
|
+
if (typeof key !== 'string') {
|
|
5
|
+
throw new Error('Input is not a string');
|
|
6
|
+
}
|
|
7
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
describe('string utils', () => {
|
|
11
|
+
describe('camelToUnderscore', () => {
|
|
12
|
+
it('', () => {
|
|
13
|
+
expect(() => camelToUnderscore(null)).toThrow('Input is not a string');
|
|
14
|
+
expect(() => camelToUnderscore(undefined)).toThrow('Input is not a string');
|
|
15
|
+
expect(() => camelToUnderscore({})).toThrow('Input is not a string');
|
|
16
|
+
expect(() => camelToUnderscore([])).toThrow('Input is not a string');
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should convert camel-cased string to underscore', () => {
|
|
20
|
+
expect(camelToUnderscore('loremIpsum')).toEqual('lorem_ipsum');
|
|
21
|
+
expect(camelToUnderscore('lorem-ipsum')).toEqual('lorem-ipsum');
|
|
22
|
+
expect(camelToUnderscore('')).toEqual('');
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('should not prefix string with an underscore', () => {
|
|
26
|
+
expect(camelToUnderscore('LoremIpsum')).toEqual('lorem_ipsum');
|
|
27
|
+
expect(camelToUnderscore('L123')).toEqual('l123');
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//
|
|
2
|
+
|
|
3
|
+
const camelToUnderscore = (key ) => {
|
|
4
|
+
if (typeof key !== 'string') {
|
|
5
|
+
throw new Error('Input is not a string');
|
|
6
|
+
}
|
|
7
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
//
|
|
11
|
+
|
|
12
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
13
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
14
|
+
throw new Error('Input is not an object');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
18
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
19
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
20
|
+
return acc;
|
|
21
|
+
}, {});
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { convertKeysFromCamelToUnderscore };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//
|
|
2
|
+
|
|
3
|
+
const camelToUnderscore = (key ) => {
|
|
4
|
+
if (typeof key !== 'string') {
|
|
5
|
+
throw new Error('Input is not a string');
|
|
6
|
+
}
|
|
7
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { camelToUnderscore };
|
package/esm/web-rtc-client.js
CHANGED
|
@@ -2786,6 +2786,7 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2786
2786
|
|
|
2787
2787
|
|
|
2788
2788
|
|
|
2789
|
+
|
|
2789
2790
|
) {
|
|
2790
2791
|
const body = {
|
|
2791
2792
|
backend: params.backend || DEFAULT_BACKEND_USER,
|
|
@@ -2806,9 +2807,14 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2806
2807
|
}
|
|
2807
2808
|
|
|
2808
2809
|
if (params.tenantId) {
|
|
2810
|
+
console.warn('Use of `tenantId` is deprecated when calling logIn() method, use `domainName` instead.');
|
|
2809
2811
|
body.tenant_id = params.tenantId;
|
|
2810
2812
|
}
|
|
2811
2813
|
|
|
2814
|
+
if (params.domainName) {
|
|
2815
|
+
body.domain_name = params.domainName;
|
|
2816
|
+
}
|
|
2817
|
+
|
|
2812
2818
|
return client.post(`${baseUrl}/token`, body, headers).then(response => Session.parse(response));
|
|
2813
2819
|
},
|
|
2814
2820
|
|
|
@@ -2821,6 +2827,7 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2821
2827
|
expiration ,
|
|
2822
2828
|
isMobile = false,
|
|
2823
2829
|
tenantId ,
|
|
2830
|
+
domainName ,
|
|
2824
2831
|
) => {
|
|
2825
2832
|
const body = {
|
|
2826
2833
|
backend: backend || DEFAULT_BACKEND_USER,
|
|
@@ -2830,9 +2837,14 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
2830
2837
|
};
|
|
2831
2838
|
|
|
2832
2839
|
if (tenantId) {
|
|
2840
|
+
console.warn('Use of `tenantId` is deprecated when calling refreshToken() method, use `domainName` instead.');
|
|
2833
2841
|
body.tenant_id = tenantId;
|
|
2834
2842
|
}
|
|
2835
2843
|
|
|
2844
|
+
if (domainName) {
|
|
2845
|
+
body.domain_name = domainName;
|
|
2846
|
+
}
|
|
2847
|
+
|
|
2836
2848
|
const headers = {
|
|
2837
2849
|
'Content-Type': 'application/json',
|
|
2838
2850
|
...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
|
|
@@ -3202,6 +3214,70 @@ class ExternalApp {
|
|
|
3202
3214
|
|
|
3203
3215
|
//
|
|
3204
3216
|
|
|
3217
|
+
class MeetingAuthorization {
|
|
3218
|
+
|
|
3219
|
+
|
|
3220
|
+
|
|
3221
|
+
|
|
3222
|
+
|
|
3223
|
+
|
|
3224
|
+
constructor({
|
|
3225
|
+
meetingUuid,
|
|
3226
|
+
uuid,
|
|
3227
|
+
userUuid,
|
|
3228
|
+
userName,
|
|
3229
|
+
} = {}) {
|
|
3230
|
+
this.meetingUuid = meetingUuid;
|
|
3231
|
+
this.uuid = uuid;
|
|
3232
|
+
this.userUuid = userUuid;
|
|
3233
|
+
this.userName = userName;
|
|
3234
|
+
}
|
|
3235
|
+
|
|
3236
|
+
setStatus(status ) {
|
|
3237
|
+
this.status = status;
|
|
3238
|
+
}
|
|
3239
|
+
|
|
3240
|
+
getStatus() {
|
|
3241
|
+
return this.status;
|
|
3242
|
+
}
|
|
3243
|
+
|
|
3244
|
+
static parse(plain ) {
|
|
3245
|
+
const {
|
|
3246
|
+
meeting_uuid: meetingUuid,
|
|
3247
|
+
uuid,
|
|
3248
|
+
guest_uuid: userUuid,
|
|
3249
|
+
guest_name: userName,
|
|
3250
|
+
} = plain;
|
|
3251
|
+
|
|
3252
|
+
return new MeetingAuthorization({
|
|
3253
|
+
meetingUuid,
|
|
3254
|
+
uuid,
|
|
3255
|
+
userUuid,
|
|
3256
|
+
userName,
|
|
3257
|
+
});
|
|
3258
|
+
}
|
|
3259
|
+
|
|
3260
|
+
static parseMany(items ) {
|
|
3261
|
+
if (!items) {
|
|
3262
|
+
return [];
|
|
3263
|
+
}
|
|
3264
|
+
return items.map(MeetingAuthorization.parse);
|
|
3265
|
+
}
|
|
3266
|
+
}
|
|
3267
|
+
|
|
3268
|
+
//
|
|
3269
|
+
|
|
3270
|
+
|
|
3271
|
+
|
|
3272
|
+
|
|
3273
|
+
|
|
3274
|
+
|
|
3275
|
+
|
|
3276
|
+
|
|
3277
|
+
|
|
3278
|
+
|
|
3279
|
+
|
|
3280
|
+
|
|
3205
3281
|
|
|
3206
3282
|
|
|
3207
3283
|
|
|
@@ -3212,6 +3288,7 @@ class ExternalApp {
|
|
|
3212
3288
|
|
|
3213
3289
|
|
|
3214
3290
|
|
|
3291
|
+
|
|
3215
3292
|
|
|
3216
3293
|
|
|
3217
3294
|
class Meeting {
|
|
@@ -3226,6 +3303,8 @@ class Meeting {
|
|
|
3226
3303
|
|
|
3227
3304
|
|
|
3228
3305
|
|
|
3306
|
+
|
|
3307
|
+
|
|
3229
3308
|
|
|
3230
3309
|
static parse(plain ) {
|
|
3231
3310
|
return new Meeting({
|
|
@@ -3238,6 +3317,7 @@ class Meeting {
|
|
|
3238
3317
|
extension: plain.exten,
|
|
3239
3318
|
persistent: plain.persistent,
|
|
3240
3319
|
creationTime: moment(plain.creation_time).toDate(),
|
|
3320
|
+
requireAuthorization: plain.require_authorization,
|
|
3241
3321
|
});
|
|
3242
3322
|
}
|
|
3243
3323
|
|
|
@@ -3262,6 +3342,7 @@ class Meeting {
|
|
|
3262
3342
|
extension,
|
|
3263
3343
|
persistent,
|
|
3264
3344
|
creationTime,
|
|
3345
|
+
requireAuthorization,
|
|
3265
3346
|
} = {}) {
|
|
3266
3347
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
3267
3348
|
this.uri = uri;
|
|
@@ -3272,6 +3353,7 @@ class Meeting {
|
|
|
3272
3353
|
this.extension = extension;
|
|
3273
3354
|
this.persistent = persistent;
|
|
3274
3355
|
this.creationTime = creationTime;
|
|
3356
|
+
this.requireAuthorization = requireAuthorization;
|
|
3275
3357
|
|
|
3276
3358
|
// Useful to compare instead of instanceof with minified code
|
|
3277
3359
|
this.type = 'Meeting';
|
|
@@ -3282,8 +3364,32 @@ class Meeting {
|
|
|
3282
3364
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
3283
3365
|
return { username, secret };
|
|
3284
3366
|
}
|
|
3367
|
+
|
|
3285
3368
|
}
|
|
3286
3369
|
|
|
3370
|
+
//
|
|
3371
|
+
|
|
3372
|
+
const camelToUnderscore = (key ) => {
|
|
3373
|
+
if (typeof key !== 'string') {
|
|
3374
|
+
throw new Error('Input is not a string');
|
|
3375
|
+
}
|
|
3376
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
3377
|
+
};
|
|
3378
|
+
|
|
3379
|
+
//
|
|
3380
|
+
|
|
3381
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
3382
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
3383
|
+
throw new Error('Input is not an object');
|
|
3384
|
+
}
|
|
3385
|
+
|
|
3386
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
3387
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
3388
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
3389
|
+
return acc;
|
|
3390
|
+
}, {});
|
|
3391
|
+
};
|
|
3392
|
+
|
|
3287
3393
|
/* */
|
|
3288
3394
|
|
|
3289
3395
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -3352,8 +3458,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3352
3458
|
getMyMeetings: () =>
|
|
3353
3459
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
3354
3460
|
|
|
3355
|
-
createMyMeeting: (
|
|
3356
|
-
client
|
|
3461
|
+
createMyMeeting: (args ) =>
|
|
3462
|
+
client
|
|
3463
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
3464
|
+
.then(Meeting.parse),
|
|
3465
|
+
|
|
3466
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
3467
|
+
client.put(
|
|
3468
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
3469
|
+
convertKeysFromCamelToUnderscore(data),
|
|
3470
|
+
null,
|
|
3471
|
+
ApiRequester.successResponseParser,
|
|
3472
|
+
),
|
|
3357
3473
|
|
|
3358
3474
|
deleteMyMeeting: (meetingUuid ) =>
|
|
3359
3475
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -3361,8 +3477,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3361
3477
|
getMeeting: (meetingUuid ) =>
|
|
3362
3478
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3363
3479
|
|
|
3480
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
3481
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
3482
|
+
|
|
3483
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
3484
|
+
client.put(
|
|
3485
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
3486
|
+
{},
|
|
3487
|
+
null,
|
|
3488
|
+
ApiRequester.successResponseParser,
|
|
3489
|
+
),
|
|
3490
|
+
|
|
3491
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
3492
|
+
client.put(
|
|
3493
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
3494
|
+
{},
|
|
3495
|
+
null,
|
|
3496
|
+
ApiRequester.successResponseParser,
|
|
3497
|
+
),
|
|
3498
|
+
|
|
3364
3499
|
guestGetMeeting: (meetingUuid ) =>
|
|
3365
3500
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3501
|
+
|
|
3502
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
3503
|
+
client
|
|
3504
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
3505
|
+
.then(MeetingAuthorization.parse),
|
|
3506
|
+
|
|
3507
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
3508
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
3509
|
+
|
|
3366
3510
|
});
|
|
3367
3511
|
|
|
3368
3512
|
//
|
|
@@ -4127,6 +4271,7 @@ global.wazoClientId = global.wazoClientId || {};
|
|
|
4127
4271
|
global.wazoClientToken = global.wazoClientToken || {};
|
|
4128
4272
|
global.wazoRefreshToken = global.wazoRefreshToken || {};
|
|
4129
4273
|
global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
|
|
4274
|
+
global.wazoRefreshDomainName = global.wazoRefreshDomainName || {};
|
|
4130
4275
|
global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
|
|
4131
4276
|
global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
|
|
4132
4277
|
global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
|
|
@@ -4801,6 +4946,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4801
4946
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
4802
4947
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
4803
4948
|
|
|
4949
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
4950
|
+
client.delete(
|
|
4951
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
4952
|
+
null,
|
|
4953
|
+
null,
|
|
4954
|
+
ApiRequester.successResponseParser,
|
|
4955
|
+
),
|
|
4956
|
+
|
|
4804
4957
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
4805
4958
|
|
|
4806
4959
|
mute: (callId ) =>
|
|
@@ -5178,6 +5331,7 @@ class ApiClient {
|
|
|
5178
5331
|
|
|
5179
5332
|
|
|
5180
5333
|
|
|
5334
|
+
|
|
5181
5335
|
|
|
5182
5336
|
|
|
5183
5337
|
|
|
@@ -5219,6 +5373,7 @@ class ApiClient {
|
|
|
5219
5373
|
refreshToken: this.refreshToken,
|
|
5220
5374
|
refreshBackend: this.refreshBackend,
|
|
5221
5375
|
refreshTenantId: this.refreshTenantId,
|
|
5376
|
+
refreshDomainName: this.refreshDomainName,
|
|
5222
5377
|
refreshExpiration: this.refreshExpiration,
|
|
5223
5378
|
isMobile: this.isMobile,
|
|
5224
5379
|
});
|
|
@@ -5234,6 +5389,7 @@ class ApiClient {
|
|
|
5234
5389
|
this.refreshExpiration,
|
|
5235
5390
|
this.isMobile,
|
|
5236
5391
|
this.refreshTenantId,
|
|
5392
|
+
this.refreshDomainName,
|
|
5237
5393
|
);
|
|
5238
5394
|
|
|
5239
5395
|
logger$1.info('token refreshed', { token: session.token });
|
|
@@ -5287,9 +5443,14 @@ class ApiClient {
|
|
|
5287
5443
|
}
|
|
5288
5444
|
|
|
5289
5445
|
setRefreshTenantId(tenantId ) {
|
|
5446
|
+
console.warn('Use of `setRefreshTenantId` is deprecated, use `setRefreshDomainName` instead');
|
|
5290
5447
|
this.refreshTenantId = tenantId;
|
|
5291
5448
|
}
|
|
5292
5449
|
|
|
5450
|
+
setRefreshDomainName(domainName ) {
|
|
5451
|
+
this.refreshDomainName = domainName;
|
|
5452
|
+
}
|
|
5453
|
+
|
|
5293
5454
|
setIsMobile(isMobile ) {
|
|
5294
5455
|
this.isMobile = isMobile;
|
|
5295
5456
|
}
|
|
@@ -6444,7 +6605,7 @@ class WebRTCClient extends Emitter {
|
|
|
6444
6605
|
});
|
|
6445
6606
|
}
|
|
6446
6607
|
|
|
6447
|
-
changeAudioInputDevice(id , session , force ) {
|
|
6608
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
6448
6609
|
const currentId = this.getAudioDeviceId();
|
|
6449
6610
|
logger.info('setting audio input device', { id, currentId, session: !!session });
|
|
6450
6611
|
|
|
@@ -6452,33 +6613,50 @@ class WebRTCClient extends Emitter {
|
|
|
6452
6613
|
return null;
|
|
6453
6614
|
}
|
|
6454
6615
|
|
|
6616
|
+
// in order to handle an audio track change for default devices
|
|
6617
|
+
// we need the actual id of the device (not 'default')
|
|
6618
|
+
let deviceId = id;
|
|
6619
|
+
if (id === 'default' && navigator.mediaDevices) {
|
|
6620
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
6621
|
+
const defaultDevice = devices.find(device => device.deviceId === 'default');
|
|
6622
|
+
if (defaultDevice) {
|
|
6623
|
+
const deviceLabel = defaultDevice.label.replace('Default - ', '');
|
|
6624
|
+
const targetDevice = devices.find(device => device.label === deviceLabel);
|
|
6625
|
+
if (targetDevice) {
|
|
6626
|
+
deviceId = targetDevice.deviceId;
|
|
6627
|
+
if (!force && deviceId === currentId) {
|
|
6628
|
+
return null;
|
|
6629
|
+
}
|
|
6630
|
+
}
|
|
6631
|
+
}
|
|
6632
|
+
}
|
|
6633
|
+
|
|
6455
6634
|
// let's update the local audio value
|
|
6456
6635
|
if (this.audio) {
|
|
6457
6636
|
this.audio = {
|
|
6458
6637
|
deviceId: {
|
|
6459
|
-
exact:
|
|
6638
|
+
exact: deviceId,
|
|
6460
6639
|
},
|
|
6461
6640
|
};
|
|
6462
6641
|
}
|
|
6463
6642
|
|
|
6464
|
-
if (session) {
|
|
6643
|
+
if (session && navigator.mediaDevices) {
|
|
6465
6644
|
const sdh = session.sessionDescriptionHandler;
|
|
6466
6645
|
const pc = sdh.peerConnection;
|
|
6467
6646
|
|
|
6468
|
-
|
|
6469
|
-
|
|
6470
|
-
|
|
6471
|
-
|
|
6647
|
+
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
6648
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
6649
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
6650
|
+
const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
6472
6651
|
|
|
6473
|
-
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
}
|
|
6477
|
-
sender.replaceTrack(audioTrack);
|
|
6652
|
+
if (sender) {
|
|
6653
|
+
if (sender.track) {
|
|
6654
|
+
audioTrack.enabled = sender.track.enabled;
|
|
6478
6655
|
}
|
|
6656
|
+
sender.replaceTrack(audioTrack);
|
|
6657
|
+
}
|
|
6479
6658
|
|
|
6480
|
-
|
|
6481
|
-
});
|
|
6659
|
+
return stream;
|
|
6482
6660
|
}
|
|
6483
6661
|
}
|
|
6484
6662
|
|
|
@@ -6498,14 +6676,14 @@ class WebRTCClient extends Emitter {
|
|
|
6498
6676
|
return null;
|
|
6499
6677
|
}
|
|
6500
6678
|
|
|
6501
|
-
// let's
|
|
6502
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6507
|
-
}
|
|
6508
|
-
}
|
|
6679
|
+
// let's make sure we don't lose other video constraints settings -- width, height, frameRate...
|
|
6680
|
+
const videoObject = typeof this.video === 'object' ? this.video : {};
|
|
6681
|
+
this.video = {
|
|
6682
|
+
...videoObject,
|
|
6683
|
+
deviceId: {
|
|
6684
|
+
exact: id,
|
|
6685
|
+
},
|
|
6686
|
+
};
|
|
6509
6687
|
}
|
|
6510
6688
|
|
|
6511
6689
|
changeSessionVideoInputDevice(id , session ) {
|
package/esm/websocket-client.js
CHANGED
|
@@ -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,7 +959,8 @@ 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
|
export default WebSocketClient;
|
|
964
|
-
export { AGENT_PAUSED, AGENT_STATUS_UPDATE, AGENT_UNPAUSED, APPLICATION_CALL_ANSWERED, APPLICATION_CALL_DELETED, APPLICATION_CALL_DTMF_RECEIVED, APPLICATION_CALL_ENTERED, APPLICATION_CALL_INITIATED, APPLICATION_CALL_UPDATED, APPLICATION_DESTINATION_NODE_CREATED, APPLICATION_NODE_CREATED, APPLICATION_NODE_DELETED, APPLICATION_NODE_UPDATED, APPLICATION_PLAYBACK_CREATED, APPLICATION_PLAYBACK_DELETED, APPLICATION_PROGRESS_STARTED, APPLICATION_PROGRESS_STOPPED, APPLICATION_SNOOP_CREATED, APPLICATION_SNOOP_DELETED, APPLICATION_SNOOP_UPDATED, APPLICATION_USER_OUTGOING_CALL_CREATED, AUTH_SESSION_EXPIRE_SOON, AUTH_USER_EXTERNAL_AUTH_ADDED, AUTH_USER_EXTERNAL_AUTH_DELETED, CALL_ANSWERED, CALL_CREATED, CALL_DTMF_CREATED, CALL_ENDED, CALL_HELD, CALL_LOG_USER_CREATED, CALL_RESUMED, CALL_UPDATED, CHATD_PRESENCE_UPDATED, CHATD_USER_ROOM_CREATED, CHATD_USER_ROOM_MESSAGE_CREATED, CHAT_MESSAGE_RECEIVED, CHAT_MESSAGE_SENT, CONFERENCE_ADHOC_DELETED, CONFERENCE_ADHOC_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_JOINED, CONFERENCE_USER_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_TALK_STARTED, CONFERENCE_USER_PARTICIPANT_TALK_STOPPED, ENDPOINT_STATUS_UPDATE, FAVORITE_ADDED, FAVORITE_DELETED, FAX_OUTBOUND_USER_CREATED, FAX_OUTBOUND_USER_FAILED, FAX_OUTBOUND_USER_SUCCEEDED, HEARTBEAT_ENGINE_VERSION, LINE_STATUS_UPDATED, MEETING_USER_PARTICIPANT_JOINED, MEETING_USER_PARTICIPANT_LEFT, MEETING_USER_PROGRESS, SOCKET_EVENTS, SWITCHBOARD_HELD_CALLS_UPDATED, SWITCHBOARD_HELD_CALL_ANSWERED, SWITCHBOARD_QUEUED_CALLS_UPDATED, SWITCHBOARD_QUEUED_CALL_ANSWERED, TRUNK_STATUS_UPDATED, USERS_FORWARDS_BUSY_UPDATED, USERS_FORWARDS_NOANSWER_UPDATED, USERS_FORWARDS_UNCONDITIONAL_UPDATED, USERS_SERVICES_DND_UPDATED, USER_STATUS_UPDATE, USER_VOICEMAIL_MESSAGE_CREATED, USER_VOICEMAIL_MESSAGE_DELETED, USER_VOICEMAIL_MESSAGE_UPDATED };
|
|
966
|
+
export { AGENT_PAUSED, AGENT_STATUS_UPDATE, AGENT_UNPAUSED, APPLICATION_CALL_ANSWERED, APPLICATION_CALL_DELETED, APPLICATION_CALL_DTMF_RECEIVED, APPLICATION_CALL_ENTERED, APPLICATION_CALL_INITIATED, APPLICATION_CALL_UPDATED, APPLICATION_DESTINATION_NODE_CREATED, APPLICATION_NODE_CREATED, APPLICATION_NODE_DELETED, APPLICATION_NODE_UPDATED, APPLICATION_PLAYBACK_CREATED, APPLICATION_PLAYBACK_DELETED, APPLICATION_PROGRESS_STARTED, APPLICATION_PROGRESS_STOPPED, APPLICATION_SNOOP_CREATED, APPLICATION_SNOOP_DELETED, APPLICATION_SNOOP_UPDATED, APPLICATION_USER_OUTGOING_CALL_CREATED, AUTH_SESSION_EXPIRE_SOON, AUTH_USER_EXTERNAL_AUTH_ADDED, AUTH_USER_EXTERNAL_AUTH_DELETED, CALL_ANSWERED, CALL_CREATED, CALL_DTMF_CREATED, CALL_ENDED, CALL_HELD, CALL_LOG_USER_CREATED, CALL_RESUMED, CALL_UPDATED, CHATD_PRESENCE_UPDATED, CHATD_USER_ROOM_CREATED, CHATD_USER_ROOM_MESSAGE_CREATED, CHAT_MESSAGE_RECEIVED, CHAT_MESSAGE_SENT, CONFERENCE_ADHOC_DELETED, CONFERENCE_ADHOC_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_JOINED, CONFERENCE_USER_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_TALK_STARTED, CONFERENCE_USER_PARTICIPANT_TALK_STOPPED, ENDPOINT_STATUS_UPDATE, FAVORITE_ADDED, FAVORITE_DELETED, FAX_OUTBOUND_USER_CREATED, FAX_OUTBOUND_USER_FAILED, FAX_OUTBOUND_USER_SUCCEEDED, HEARTBEAT_ENGINE_VERSION, LINE_STATUS_UPDATED, MEETING_USER_GUEST_AUTHORIZATION_CREATED, MEETING_USER_PARTICIPANT_JOINED, MEETING_USER_PARTICIPANT_LEFT, MEETING_USER_PROGRESS, SOCKET_EVENTS, SWITCHBOARD_HELD_CALLS_UPDATED, SWITCHBOARD_HELD_CALL_ANSWERED, SWITCHBOARD_QUEUED_CALLS_UPDATED, SWITCHBOARD_QUEUED_CALL_ANSWERED, TRUNK_STATUS_UPDATED, USERS_FORWARDS_BUSY_UPDATED, USERS_FORWARDS_NOANSWER_UPDATED, USERS_FORWARDS_UNCONDITIONAL_UPDATED, USERS_SERVICES_DND_UPDATED, USER_STATUS_UPDATE, USER_VOICEMAIL_MESSAGE_CREATED, USER_VOICEMAIL_MESSAGE_DELETED, USER_VOICEMAIL_MESSAGE_UPDATED };
|