@wazo/sdk 0.38.7 → 0.38.8
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 +227 -27
- 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 +183 -24
- package/esm/checker/checks/aor.js +142 -2
- package/esm/checker/checks/api.js +142 -2
- package/esm/checker/checks/index.js +183 -24
- package/esm/checker/checks/wazo-websocket.js +2 -0
- package/esm/checker/checks/webrtc-transport.js +181 -24
- package/esm/checker/checks/webrtc.js +181 -24
- 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/__tests__/Meeting.test.js +87 -1
- package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
- package/esm/index.js +226 -27
- package/esm/service/CallApi.js +142 -2
- package/esm/service/getApiClient.js +142 -2
- package/esm/simple/Auth.js +226 -27
- package/esm/simple/Configuration.js +226 -27
- package/esm/simple/Directory.js +142 -2
- package/esm/simple/Phone.js +226 -27
- package/esm/simple/Websocket.js +3 -0
- package/esm/simple/index.js +226 -27
- package/esm/simple/room/LocalParticipant.js +226 -27
- package/esm/simple/room/Participant.js +226 -27
- package/esm/simple/room/RemoteParticipant.js +226 -27
- package/esm/simple/room/Room.js +226 -27
- package/esm/simple/room/SipRoom.js +226 -27
- package/esm/simple/room/Stream.js +226 -27
- package/esm/simple/room/__tests__/Participant.test.js +14747 -0
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +226 -27
- package/esm/simple/utils.js +226 -27
- 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 +181 -24
- package/esm/websocket-client.js +3 -1
- package/lib/__tests__/api-client.test.js +142 -2
- package/lib/__tests__/web-rtc-client.test.js +227 -27
- 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 +183 -24
- package/lib/checker/checks/aor.js +142 -2
- package/lib/checker/checks/api.js +142 -2
- package/lib/checker/checks/index.js +183 -24
- package/lib/checker/checks/wazo-websocket.js +2 -0
- package/lib/checker/checks/webrtc-transport.js +181 -24
- package/lib/checker/checks/webrtc.js +181 -24
- 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/__tests__/Meeting.test.js +87 -1
- package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
- package/lib/index.js +226 -27
- package/lib/service/CallApi.js +142 -2
- package/lib/service/getApiClient.js +142 -2
- package/lib/simple/Auth.js +226 -27
- package/lib/simple/Configuration.js +226 -27
- package/lib/simple/Directory.js +142 -2
- package/lib/simple/Phone.js +226 -27
- package/lib/simple/Websocket.js +3 -0
- package/lib/simple/index.js +226 -27
- package/lib/simple/room/LocalParticipant.js +226 -27
- package/lib/simple/room/Participant.js +226 -27
- package/lib/simple/room/RemoteParticipant.js +226 -27
- package/lib/simple/room/Room.js +226 -27
- package/lib/simple/room/SipRoom.js +226 -27
- package/lib/simple/room/Stream.js +226 -27
- package/lib/simple/room/__tests__/Participant.test.js +14757 -0
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +226 -27
- package/lib/simple/utils.js +226 -27
- 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 +181 -24
- 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/__tests__/Meeting.test.js +70 -1
- package/src/domain/__tests__/MeetingAuthorization.test.js +58 -0
- 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/lib/simple/Phone.js
CHANGED
|
@@ -3264,6 +3264,70 @@ class ExternalApp {
|
|
|
3264
3264
|
|
|
3265
3265
|
//
|
|
3266
3266
|
|
|
3267
|
+
class MeetingAuthorization {
|
|
3268
|
+
|
|
3269
|
+
|
|
3270
|
+
|
|
3271
|
+
|
|
3272
|
+
|
|
3273
|
+
|
|
3274
|
+
constructor({
|
|
3275
|
+
meetingUuid,
|
|
3276
|
+
uuid,
|
|
3277
|
+
userUuid,
|
|
3278
|
+
userName,
|
|
3279
|
+
} = {}) {
|
|
3280
|
+
this.meetingUuid = meetingUuid;
|
|
3281
|
+
this.uuid = uuid;
|
|
3282
|
+
this.userUuid = userUuid;
|
|
3283
|
+
this.userName = userName;
|
|
3284
|
+
}
|
|
3285
|
+
|
|
3286
|
+
setStatus(status ) {
|
|
3287
|
+
this.status = status;
|
|
3288
|
+
}
|
|
3289
|
+
|
|
3290
|
+
getStatus() {
|
|
3291
|
+
return this.status;
|
|
3292
|
+
}
|
|
3293
|
+
|
|
3294
|
+
static parse(plain ) {
|
|
3295
|
+
const {
|
|
3296
|
+
meeting_uuid: meetingUuid,
|
|
3297
|
+
uuid,
|
|
3298
|
+
guest_uuid: userUuid,
|
|
3299
|
+
guest_name: userName,
|
|
3300
|
+
} = plain;
|
|
3301
|
+
|
|
3302
|
+
return new MeetingAuthorization({
|
|
3303
|
+
meetingUuid,
|
|
3304
|
+
uuid,
|
|
3305
|
+
userUuid,
|
|
3306
|
+
userName,
|
|
3307
|
+
});
|
|
3308
|
+
}
|
|
3309
|
+
|
|
3310
|
+
static parseMany(items ) {
|
|
3311
|
+
if (!items) {
|
|
3312
|
+
return [];
|
|
3313
|
+
}
|
|
3314
|
+
return items.map(MeetingAuthorization.parse);
|
|
3315
|
+
}
|
|
3316
|
+
}
|
|
3317
|
+
|
|
3318
|
+
//
|
|
3319
|
+
|
|
3320
|
+
|
|
3321
|
+
|
|
3322
|
+
|
|
3323
|
+
|
|
3324
|
+
|
|
3325
|
+
|
|
3326
|
+
|
|
3327
|
+
|
|
3328
|
+
|
|
3329
|
+
|
|
3330
|
+
|
|
3267
3331
|
|
|
3268
3332
|
|
|
3269
3333
|
|
|
@@ -3274,6 +3338,7 @@ class ExternalApp {
|
|
|
3274
3338
|
|
|
3275
3339
|
|
|
3276
3340
|
|
|
3341
|
+
|
|
3277
3342
|
|
|
3278
3343
|
|
|
3279
3344
|
class Meeting {
|
|
@@ -3288,6 +3353,8 @@ class Meeting {
|
|
|
3288
3353
|
|
|
3289
3354
|
|
|
3290
3355
|
|
|
3356
|
+
|
|
3357
|
+
|
|
3291
3358
|
|
|
3292
3359
|
static parse(plain ) {
|
|
3293
3360
|
return new Meeting({
|
|
@@ -3300,6 +3367,7 @@ class Meeting {
|
|
|
3300
3367
|
extension: plain.exten,
|
|
3301
3368
|
persistent: plain.persistent,
|
|
3302
3369
|
creationTime: moment__default['default'](plain.creation_time).toDate(),
|
|
3370
|
+
requireAuthorization: plain.require_authorization,
|
|
3303
3371
|
});
|
|
3304
3372
|
}
|
|
3305
3373
|
|
|
@@ -3324,6 +3392,7 @@ class Meeting {
|
|
|
3324
3392
|
extension,
|
|
3325
3393
|
persistent,
|
|
3326
3394
|
creationTime,
|
|
3395
|
+
requireAuthorization,
|
|
3327
3396
|
} = {}) {
|
|
3328
3397
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
3329
3398
|
this.uri = uri;
|
|
@@ -3334,6 +3403,7 @@ class Meeting {
|
|
|
3334
3403
|
this.extension = extension;
|
|
3335
3404
|
this.persistent = persistent;
|
|
3336
3405
|
this.creationTime = creationTime;
|
|
3406
|
+
this.requireAuthorization = requireAuthorization;
|
|
3337
3407
|
|
|
3338
3408
|
// Useful to compare instead of instanceof with minified code
|
|
3339
3409
|
this.type = 'Meeting';
|
|
@@ -3344,8 +3414,32 @@ class Meeting {
|
|
|
3344
3414
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
3345
3415
|
return { username, secret };
|
|
3346
3416
|
}
|
|
3417
|
+
|
|
3347
3418
|
}
|
|
3348
3419
|
|
|
3420
|
+
//
|
|
3421
|
+
|
|
3422
|
+
const camelToUnderscore = (key ) => {
|
|
3423
|
+
if (typeof key !== 'string') {
|
|
3424
|
+
throw new Error('Input is not a string');
|
|
3425
|
+
}
|
|
3426
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
3427
|
+
};
|
|
3428
|
+
|
|
3429
|
+
//
|
|
3430
|
+
|
|
3431
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
3432
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
3433
|
+
throw new Error('Input is not an object');
|
|
3434
|
+
}
|
|
3435
|
+
|
|
3436
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
3437
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
3438
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
3439
|
+
return acc;
|
|
3440
|
+
}, {});
|
|
3441
|
+
};
|
|
3442
|
+
|
|
3349
3443
|
/* */
|
|
3350
3444
|
|
|
3351
3445
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -3414,8 +3508,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3414
3508
|
getMyMeetings: () =>
|
|
3415
3509
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
3416
3510
|
|
|
3417
|
-
createMyMeeting: (
|
|
3418
|
-
client
|
|
3511
|
+
createMyMeeting: (args ) =>
|
|
3512
|
+
client
|
|
3513
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
3514
|
+
.then(Meeting.parse),
|
|
3515
|
+
|
|
3516
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
3517
|
+
client.put(
|
|
3518
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
3519
|
+
convertKeysFromCamelToUnderscore(data),
|
|
3520
|
+
null,
|
|
3521
|
+
ApiRequester.successResponseParser,
|
|
3522
|
+
),
|
|
3419
3523
|
|
|
3420
3524
|
deleteMyMeeting: (meetingUuid ) =>
|
|
3421
3525
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -3423,8 +3527,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3423
3527
|
getMeeting: (meetingUuid ) =>
|
|
3424
3528
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3425
3529
|
|
|
3530
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
3531
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
3532
|
+
|
|
3533
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
3534
|
+
client.put(
|
|
3535
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
3536
|
+
{},
|
|
3537
|
+
null,
|
|
3538
|
+
ApiRequester.successResponseParser,
|
|
3539
|
+
),
|
|
3540
|
+
|
|
3541
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
3542
|
+
client.put(
|
|
3543
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
3544
|
+
{},
|
|
3545
|
+
null,
|
|
3546
|
+
ApiRequester.successResponseParser,
|
|
3547
|
+
),
|
|
3548
|
+
|
|
3426
3549
|
guestGetMeeting: (meetingUuid ) =>
|
|
3427
3550
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3551
|
+
|
|
3552
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
3553
|
+
client
|
|
3554
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
3555
|
+
.then(MeetingAuthorization.parse),
|
|
3556
|
+
|
|
3557
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
3558
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
3559
|
+
|
|
3428
3560
|
});
|
|
3429
3561
|
|
|
3430
3562
|
//
|
|
@@ -5066,6 +5198,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
5066
5198
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
5067
5199
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
5068
5200
|
|
|
5201
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
5202
|
+
client.delete(
|
|
5203
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
5204
|
+
null,
|
|
5205
|
+
null,
|
|
5206
|
+
ApiRequester.successResponseParser,
|
|
5207
|
+
),
|
|
5208
|
+
|
|
5069
5209
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
5070
5210
|
|
|
5071
5211
|
mute: (callId ) =>
|
|
@@ -7523,7 +7663,7 @@ class WebRTCClient extends Emitter {
|
|
|
7523
7663
|
});
|
|
7524
7664
|
}
|
|
7525
7665
|
|
|
7526
|
-
changeAudioInputDevice(id , session , force ) {
|
|
7666
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
7527
7667
|
const currentId = this.getAudioDeviceId();
|
|
7528
7668
|
logger$9.info('setting audio input device', { id, currentId, session: !!session });
|
|
7529
7669
|
|
|
@@ -7531,33 +7671,50 @@ class WebRTCClient extends Emitter {
|
|
|
7531
7671
|
return null;
|
|
7532
7672
|
}
|
|
7533
7673
|
|
|
7674
|
+
// in order to handle an audio track change for default devices
|
|
7675
|
+
// we need the actual id of the device (not 'default')
|
|
7676
|
+
let deviceId = id;
|
|
7677
|
+
if (id === 'default' && navigator.mediaDevices) {
|
|
7678
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
7679
|
+
const defaultDevice = devices.find(device => device.deviceId === 'default');
|
|
7680
|
+
if (defaultDevice) {
|
|
7681
|
+
const deviceLabel = defaultDevice.label.replace('Default - ', '');
|
|
7682
|
+
const targetDevice = devices.find(device => device.label === deviceLabel);
|
|
7683
|
+
if (targetDevice) {
|
|
7684
|
+
deviceId = targetDevice.deviceId;
|
|
7685
|
+
if (!force && deviceId === currentId) {
|
|
7686
|
+
return null;
|
|
7687
|
+
}
|
|
7688
|
+
}
|
|
7689
|
+
}
|
|
7690
|
+
}
|
|
7691
|
+
|
|
7534
7692
|
// let's update the local audio value
|
|
7535
7693
|
if (this.audio) {
|
|
7536
7694
|
this.audio = {
|
|
7537
7695
|
deviceId: {
|
|
7538
|
-
exact:
|
|
7696
|
+
exact: deviceId,
|
|
7539
7697
|
},
|
|
7540
7698
|
};
|
|
7541
7699
|
}
|
|
7542
7700
|
|
|
7543
|
-
if (session) {
|
|
7701
|
+
if (session && navigator.mediaDevices) {
|
|
7544
7702
|
const sdh = session.sessionDescriptionHandler;
|
|
7545
7703
|
const pc = sdh.peerConnection;
|
|
7546
7704
|
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7705
|
+
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7706
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7707
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
7708
|
+
const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7551
7709
|
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
}
|
|
7556
|
-
sender.replaceTrack(audioTrack);
|
|
7710
|
+
if (sender) {
|
|
7711
|
+
if (sender.track) {
|
|
7712
|
+
audioTrack.enabled = sender.track.enabled;
|
|
7557
7713
|
}
|
|
7714
|
+
sender.replaceTrack(audioTrack);
|
|
7715
|
+
}
|
|
7558
7716
|
|
|
7559
|
-
|
|
7560
|
-
});
|
|
7717
|
+
return stream;
|
|
7561
7718
|
}
|
|
7562
7719
|
}
|
|
7563
7720
|
|
|
@@ -7577,14 +7734,14 @@ class WebRTCClient extends Emitter {
|
|
|
7577
7734
|
return null;
|
|
7578
7735
|
}
|
|
7579
7736
|
|
|
7580
|
-
// let's
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
}
|
|
7587
|
-
}
|
|
7737
|
+
// let's make sure we don't lose other video constraints settings -- width, height, frameRate...
|
|
7738
|
+
const videoObject = typeof this.video === 'object' ? this.video : {};
|
|
7739
|
+
this.video = {
|
|
7740
|
+
...videoObject,
|
|
7741
|
+
deviceId: {
|
|
7742
|
+
exact: id,
|
|
7743
|
+
},
|
|
7744
|
+
};
|
|
7588
7745
|
}
|
|
7589
7746
|
|
|
7590
7747
|
changeSessionVideoInputDevice(id , session ) {
|
|
@@ -10862,6 +11019,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
10862
11019
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
10863
11020
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
10864
11021
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
11022
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
10865
11023
|
|
|
10866
11024
|
const BLACKLIST_EVENTS = [
|
|
10867
11025
|
CHAT_MESSAGE_SENT,
|
|
@@ -11213,6 +11371,7 @@ WebSocketClient.eventLists = [
|
|
|
11213
11371
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11214
11372
|
CONFERENCE_ADHOC_DELETED,
|
|
11215
11373
|
MEETING_USER_PROGRESS,
|
|
11374
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11216
11375
|
];
|
|
11217
11376
|
|
|
11218
11377
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -11284,6 +11443,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
11284
11443
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11285
11444
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11286
11445
|
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
11446
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED: MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11287
11447
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
11288
11448
|
'default': WebSocketClient
|
|
11289
11449
|
});
|
|
@@ -11388,6 +11548,7 @@ class Participant extends Emitter {
|
|
|
11388
11548
|
|
|
11389
11549
|
|
|
11390
11550
|
|
|
11551
|
+
|
|
11391
11552
|
|
|
11392
11553
|
|
|
11393
11554
|
|
|
@@ -11405,6 +11566,7 @@ class Participant extends Emitter {
|
|
|
11405
11566
|
|
|
11406
11567
|
|
|
11407
11568
|
|
|
11569
|
+
|
|
11408
11570
|
|
|
11409
11571
|
/**
|
|
11410
11572
|
* @param room Room The room where the participant is
|
|
@@ -11428,6 +11590,7 @@ class Participant extends Emitter {
|
|
|
11428
11590
|
this.screensharing = false;
|
|
11429
11591
|
this.isOnHold = false;
|
|
11430
11592
|
this.extra = extra;
|
|
11593
|
+
this.banned = false;
|
|
11431
11594
|
|
|
11432
11595
|
this.ON_UPDATED = 'participant/ON_UPDATED';
|
|
11433
11596
|
this.ON_START_TALKING = 'participant/ON_START_TALKING';
|
|
@@ -11444,6 +11607,7 @@ class Participant extends Emitter {
|
|
|
11444
11607
|
this.ON_EXTRA_CHANGE = 'participant/ON_EXTRA_CHANGE';
|
|
11445
11608
|
this.ON_HOLD = 'participant/ON_HOLD';
|
|
11446
11609
|
this.ON_RESUME = 'participant/ON_RESUME';
|
|
11610
|
+
this.ON_BAN = 'participant/ON_BAN';
|
|
11447
11611
|
}
|
|
11448
11612
|
|
|
11449
11613
|
triggerEvent(name , ...args ) {
|
|
@@ -11484,6 +11648,10 @@ class Participant extends Emitter {
|
|
|
11484
11648
|
status.extra = this.extra;
|
|
11485
11649
|
break;
|
|
11486
11650
|
}
|
|
11651
|
+
case this.ON_BAN: {
|
|
11652
|
+
status.banned = true;
|
|
11653
|
+
break;
|
|
11654
|
+
}
|
|
11487
11655
|
}
|
|
11488
11656
|
|
|
11489
11657
|
if (broadcast) {
|
|
@@ -11586,6 +11754,11 @@ class Participant extends Emitter {
|
|
|
11586
11754
|
this.triggerUpdate(this.ON_RESUME, broadcast);
|
|
11587
11755
|
}
|
|
11588
11756
|
|
|
11757
|
+
onBan(broadcast = true) {
|
|
11758
|
+
this.banned = true;
|
|
11759
|
+
this.triggerUpdate(this.ON_BAN, broadcast);
|
|
11760
|
+
}
|
|
11761
|
+
|
|
11589
11762
|
getStatus() {
|
|
11590
11763
|
return {
|
|
11591
11764
|
callId: this.callId,
|
|
@@ -11632,6 +11805,10 @@ class Participant extends Emitter {
|
|
|
11632
11805
|
}
|
|
11633
11806
|
}
|
|
11634
11807
|
|
|
11808
|
+
if (status.banned) {
|
|
11809
|
+
this.onBan(false);
|
|
11810
|
+
}
|
|
11811
|
+
|
|
11635
11812
|
// Poor man's object comparison
|
|
11636
11813
|
if (typeof status.extra !== 'undefined' && JSON.stringify(this.extra) !== JSON.stringify(status.extra)) {
|
|
11637
11814
|
this.extra = { ...this.extra, ...status.extra };
|
|
@@ -11659,6 +11836,28 @@ class Participant extends Emitter {
|
|
|
11659
11836
|
this.streams = streams;
|
|
11660
11837
|
this.videoStreams = streams;
|
|
11661
11838
|
}
|
|
11839
|
+
|
|
11840
|
+
async ban(apiRequestDelay = null) {
|
|
11841
|
+
const { meetingUuid } = this.room;
|
|
11842
|
+
if (!meetingUuid) {
|
|
11843
|
+
throw new Error('Attempting to ban a participant without a `meetingUuid`');
|
|
11844
|
+
}
|
|
11845
|
+
|
|
11846
|
+
// this notifies all that someone is being banned
|
|
11847
|
+
this.onBan(true);
|
|
11848
|
+
|
|
11849
|
+
// this allows to delay the actual ban, in order for the banned participant as well as others to react to the situation
|
|
11850
|
+
if (apiRequestDelay) {
|
|
11851
|
+
await this.delay(apiRequestDelay);
|
|
11852
|
+
}
|
|
11853
|
+
|
|
11854
|
+
// proceed with the actual kick
|
|
11855
|
+
return getApiClient().calld.banMeetingParticipant(meetingUuid, this.callId);
|
|
11856
|
+
}
|
|
11857
|
+
|
|
11858
|
+
async delay(ms ) {
|
|
11859
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
11860
|
+
}
|
|
11662
11861
|
}
|
|
11663
11862
|
|
|
11664
11863
|
//
|
|
@@ -11811,7 +12010,7 @@ class Room$1 extends Emitter {
|
|
|
11811
12010
|
logger$3.info('connecting to room', { extension, audioOnly, room: !!room });
|
|
11812
12011
|
|
|
11813
12012
|
if (!room) {
|
|
11814
|
-
await Wazo.Phone.connect();
|
|
12013
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
11815
12014
|
|
|
11816
12015
|
const withCamera = constraints && !!constraints.video;
|
|
11817
12016
|
|
|
@@ -12256,7 +12455,7 @@ class Room$1 extends Emitter {
|
|
|
12256
12455
|
const participant = this._getParticipantFromCallId(status.callId);
|
|
12257
12456
|
|
|
12258
12457
|
if (participant) {
|
|
12259
|
-
// we're
|
|
12458
|
+
// we're receiving, so no need to broadcast
|
|
12260
12459
|
participant.updateStatus(status, false);
|
|
12261
12460
|
}
|
|
12262
12461
|
break;
|
|
@@ -12523,7 +12722,7 @@ class SipRoom extends Room$1 {
|
|
|
12523
12722
|
logger$2.info('connecting to sip room', { extension, audioOnly, room: !!room });
|
|
12524
12723
|
|
|
12525
12724
|
if (!room) {
|
|
12526
|
-
await Wazo.Phone.connect();
|
|
12725
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
12527
12726
|
|
|
12528
12727
|
const withCamera = constraints && !!constraints.video;
|
|
12529
12728
|
|
package/lib/simple/Websocket.js
CHANGED
|
@@ -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 WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -1037,6 +1039,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
1037
1039
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
1038
1040
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
1039
1041
|
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
1042
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED: MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
1040
1043
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
1041
1044
|
'default': WebSocketClient
|
|
1042
1045
|
});
|