@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/esm/simple/Phone.js
CHANGED
|
@@ -3254,6 +3254,70 @@ class ExternalApp {
|
|
|
3254
3254
|
|
|
3255
3255
|
//
|
|
3256
3256
|
|
|
3257
|
+
class MeetingAuthorization {
|
|
3258
|
+
|
|
3259
|
+
|
|
3260
|
+
|
|
3261
|
+
|
|
3262
|
+
|
|
3263
|
+
|
|
3264
|
+
constructor({
|
|
3265
|
+
meetingUuid,
|
|
3266
|
+
uuid,
|
|
3267
|
+
userUuid,
|
|
3268
|
+
userName,
|
|
3269
|
+
} = {}) {
|
|
3270
|
+
this.meetingUuid = meetingUuid;
|
|
3271
|
+
this.uuid = uuid;
|
|
3272
|
+
this.userUuid = userUuid;
|
|
3273
|
+
this.userName = userName;
|
|
3274
|
+
}
|
|
3275
|
+
|
|
3276
|
+
setStatus(status ) {
|
|
3277
|
+
this.status = status;
|
|
3278
|
+
}
|
|
3279
|
+
|
|
3280
|
+
getStatus() {
|
|
3281
|
+
return this.status;
|
|
3282
|
+
}
|
|
3283
|
+
|
|
3284
|
+
static parse(plain ) {
|
|
3285
|
+
const {
|
|
3286
|
+
meeting_uuid: meetingUuid,
|
|
3287
|
+
uuid,
|
|
3288
|
+
guest_uuid: userUuid,
|
|
3289
|
+
guest_name: userName,
|
|
3290
|
+
} = plain;
|
|
3291
|
+
|
|
3292
|
+
return new MeetingAuthorization({
|
|
3293
|
+
meetingUuid,
|
|
3294
|
+
uuid,
|
|
3295
|
+
userUuid,
|
|
3296
|
+
userName,
|
|
3297
|
+
});
|
|
3298
|
+
}
|
|
3299
|
+
|
|
3300
|
+
static parseMany(items ) {
|
|
3301
|
+
if (!items) {
|
|
3302
|
+
return [];
|
|
3303
|
+
}
|
|
3304
|
+
return items.map(MeetingAuthorization.parse);
|
|
3305
|
+
}
|
|
3306
|
+
}
|
|
3307
|
+
|
|
3308
|
+
//
|
|
3309
|
+
|
|
3310
|
+
|
|
3311
|
+
|
|
3312
|
+
|
|
3313
|
+
|
|
3314
|
+
|
|
3315
|
+
|
|
3316
|
+
|
|
3317
|
+
|
|
3318
|
+
|
|
3319
|
+
|
|
3320
|
+
|
|
3257
3321
|
|
|
3258
3322
|
|
|
3259
3323
|
|
|
@@ -3264,6 +3328,7 @@ class ExternalApp {
|
|
|
3264
3328
|
|
|
3265
3329
|
|
|
3266
3330
|
|
|
3331
|
+
|
|
3267
3332
|
|
|
3268
3333
|
|
|
3269
3334
|
class Meeting {
|
|
@@ -3278,6 +3343,8 @@ class Meeting {
|
|
|
3278
3343
|
|
|
3279
3344
|
|
|
3280
3345
|
|
|
3346
|
+
|
|
3347
|
+
|
|
3281
3348
|
|
|
3282
3349
|
static parse(plain ) {
|
|
3283
3350
|
return new Meeting({
|
|
@@ -3290,6 +3357,7 @@ class Meeting {
|
|
|
3290
3357
|
extension: plain.exten,
|
|
3291
3358
|
persistent: plain.persistent,
|
|
3292
3359
|
creationTime: moment(plain.creation_time).toDate(),
|
|
3360
|
+
requireAuthorization: plain.require_authorization,
|
|
3293
3361
|
});
|
|
3294
3362
|
}
|
|
3295
3363
|
|
|
@@ -3314,6 +3382,7 @@ class Meeting {
|
|
|
3314
3382
|
extension,
|
|
3315
3383
|
persistent,
|
|
3316
3384
|
creationTime,
|
|
3385
|
+
requireAuthorization,
|
|
3317
3386
|
} = {}) {
|
|
3318
3387
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
3319
3388
|
this.uri = uri;
|
|
@@ -3324,6 +3393,7 @@ class Meeting {
|
|
|
3324
3393
|
this.extension = extension;
|
|
3325
3394
|
this.persistent = persistent;
|
|
3326
3395
|
this.creationTime = creationTime;
|
|
3396
|
+
this.requireAuthorization = requireAuthorization;
|
|
3327
3397
|
|
|
3328
3398
|
// Useful to compare instead of instanceof with minified code
|
|
3329
3399
|
this.type = 'Meeting';
|
|
@@ -3334,8 +3404,32 @@ class Meeting {
|
|
|
3334
3404
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
3335
3405
|
return { username, secret };
|
|
3336
3406
|
}
|
|
3407
|
+
|
|
3337
3408
|
}
|
|
3338
3409
|
|
|
3410
|
+
//
|
|
3411
|
+
|
|
3412
|
+
const camelToUnderscore = (key ) => {
|
|
3413
|
+
if (typeof key !== 'string') {
|
|
3414
|
+
throw new Error('Input is not a string');
|
|
3415
|
+
}
|
|
3416
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
3417
|
+
};
|
|
3418
|
+
|
|
3419
|
+
//
|
|
3420
|
+
|
|
3421
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
3422
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
3423
|
+
throw new Error('Input is not an object');
|
|
3424
|
+
}
|
|
3425
|
+
|
|
3426
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
3427
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
3428
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
3429
|
+
return acc;
|
|
3430
|
+
}, {});
|
|
3431
|
+
};
|
|
3432
|
+
|
|
3339
3433
|
/* */
|
|
3340
3434
|
|
|
3341
3435
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -3404,8 +3498,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3404
3498
|
getMyMeetings: () =>
|
|
3405
3499
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
3406
3500
|
|
|
3407
|
-
createMyMeeting: (
|
|
3408
|
-
client
|
|
3501
|
+
createMyMeeting: (args ) =>
|
|
3502
|
+
client
|
|
3503
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
3504
|
+
.then(Meeting.parse),
|
|
3505
|
+
|
|
3506
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
3507
|
+
client.put(
|
|
3508
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
3509
|
+
convertKeysFromCamelToUnderscore(data),
|
|
3510
|
+
null,
|
|
3511
|
+
ApiRequester.successResponseParser,
|
|
3512
|
+
),
|
|
3409
3513
|
|
|
3410
3514
|
deleteMyMeeting: (meetingUuid ) =>
|
|
3411
3515
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -3413,8 +3517,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3413
3517
|
getMeeting: (meetingUuid ) =>
|
|
3414
3518
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3415
3519
|
|
|
3520
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
3521
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
3522
|
+
|
|
3523
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
3524
|
+
client.put(
|
|
3525
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
3526
|
+
{},
|
|
3527
|
+
null,
|
|
3528
|
+
ApiRequester.successResponseParser,
|
|
3529
|
+
),
|
|
3530
|
+
|
|
3531
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
3532
|
+
client.put(
|
|
3533
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
3534
|
+
{},
|
|
3535
|
+
null,
|
|
3536
|
+
ApiRequester.successResponseParser,
|
|
3537
|
+
),
|
|
3538
|
+
|
|
3416
3539
|
guestGetMeeting: (meetingUuid ) =>
|
|
3417
3540
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3541
|
+
|
|
3542
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
3543
|
+
client
|
|
3544
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
3545
|
+
.then(MeetingAuthorization.parse),
|
|
3546
|
+
|
|
3547
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
3548
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
3549
|
+
|
|
3418
3550
|
});
|
|
3419
3551
|
|
|
3420
3552
|
//
|
|
@@ -5056,6 +5188,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
5056
5188
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
5057
5189
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
5058
5190
|
|
|
5191
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
5192
|
+
client.delete(
|
|
5193
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
5194
|
+
null,
|
|
5195
|
+
null,
|
|
5196
|
+
ApiRequester.successResponseParser,
|
|
5197
|
+
),
|
|
5198
|
+
|
|
5059
5199
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
5060
5200
|
|
|
5061
5201
|
mute: (callId ) =>
|
|
@@ -7513,7 +7653,7 @@ class WebRTCClient extends Emitter {
|
|
|
7513
7653
|
});
|
|
7514
7654
|
}
|
|
7515
7655
|
|
|
7516
|
-
changeAudioInputDevice(id , session , force ) {
|
|
7656
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
7517
7657
|
const currentId = this.getAudioDeviceId();
|
|
7518
7658
|
logger$9.info('setting audio input device', { id, currentId, session: !!session });
|
|
7519
7659
|
|
|
@@ -7521,33 +7661,50 @@ class WebRTCClient extends Emitter {
|
|
|
7521
7661
|
return null;
|
|
7522
7662
|
}
|
|
7523
7663
|
|
|
7664
|
+
// in order to handle an audio track change for default devices
|
|
7665
|
+
// we need the actual id of the device (not 'default')
|
|
7666
|
+
let deviceId = id;
|
|
7667
|
+
if (id === 'default' && navigator.mediaDevices) {
|
|
7668
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
7669
|
+
const defaultDevice = devices.find(device => device.deviceId === 'default');
|
|
7670
|
+
if (defaultDevice) {
|
|
7671
|
+
const deviceLabel = defaultDevice.label.replace('Default - ', '');
|
|
7672
|
+
const targetDevice = devices.find(device => device.label === deviceLabel);
|
|
7673
|
+
if (targetDevice) {
|
|
7674
|
+
deviceId = targetDevice.deviceId;
|
|
7675
|
+
if (!force && deviceId === currentId) {
|
|
7676
|
+
return null;
|
|
7677
|
+
}
|
|
7678
|
+
}
|
|
7679
|
+
}
|
|
7680
|
+
}
|
|
7681
|
+
|
|
7524
7682
|
// let's update the local audio value
|
|
7525
7683
|
if (this.audio) {
|
|
7526
7684
|
this.audio = {
|
|
7527
7685
|
deviceId: {
|
|
7528
|
-
exact:
|
|
7686
|
+
exact: deviceId,
|
|
7529
7687
|
},
|
|
7530
7688
|
};
|
|
7531
7689
|
}
|
|
7532
7690
|
|
|
7533
|
-
if (session) {
|
|
7691
|
+
if (session && navigator.mediaDevices) {
|
|
7534
7692
|
const sdh = session.sessionDescriptionHandler;
|
|
7535
7693
|
const pc = sdh.peerConnection;
|
|
7536
7694
|
|
|
7537
|
-
|
|
7538
|
-
|
|
7539
|
-
|
|
7540
|
-
|
|
7695
|
+
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7696
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7697
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
7698
|
+
const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7541
7699
|
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
|
|
7545
|
-
}
|
|
7546
|
-
sender.replaceTrack(audioTrack);
|
|
7700
|
+
if (sender) {
|
|
7701
|
+
if (sender.track) {
|
|
7702
|
+
audioTrack.enabled = sender.track.enabled;
|
|
7547
7703
|
}
|
|
7704
|
+
sender.replaceTrack(audioTrack);
|
|
7705
|
+
}
|
|
7548
7706
|
|
|
7549
|
-
|
|
7550
|
-
});
|
|
7707
|
+
return stream;
|
|
7551
7708
|
}
|
|
7552
7709
|
}
|
|
7553
7710
|
|
|
@@ -7567,14 +7724,14 @@ class WebRTCClient extends Emitter {
|
|
|
7567
7724
|
return null;
|
|
7568
7725
|
}
|
|
7569
7726
|
|
|
7570
|
-
// let's
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
}
|
|
7577
|
-
}
|
|
7727
|
+
// let's make sure we don't lose other video constraints settings -- width, height, frameRate...
|
|
7728
|
+
const videoObject = typeof this.video === 'object' ? this.video : {};
|
|
7729
|
+
this.video = {
|
|
7730
|
+
...videoObject,
|
|
7731
|
+
deviceId: {
|
|
7732
|
+
exact: id,
|
|
7733
|
+
},
|
|
7734
|
+
};
|
|
7578
7735
|
}
|
|
7579
7736
|
|
|
7580
7737
|
changeSessionVideoInputDevice(id , session ) {
|
|
@@ -10852,6 +11009,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
10852
11009
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
10853
11010
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
10854
11011
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
11012
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
10855
11013
|
|
|
10856
11014
|
const BLACKLIST_EVENTS = [
|
|
10857
11015
|
CHAT_MESSAGE_SENT,
|
|
@@ -11203,6 +11361,7 @@ WebSocketClient.eventLists = [
|
|
|
11203
11361
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11204
11362
|
CONFERENCE_ADHOC_DELETED,
|
|
11205
11363
|
MEETING_USER_PROGRESS,
|
|
11364
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11206
11365
|
];
|
|
11207
11366
|
|
|
11208
11367
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -11274,6 +11433,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
11274
11433
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11275
11434
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11276
11435
|
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
11436
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED: MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11277
11437
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
11278
11438
|
'default': WebSocketClient
|
|
11279
11439
|
});
|
|
@@ -11378,6 +11538,7 @@ class Participant extends Emitter {
|
|
|
11378
11538
|
|
|
11379
11539
|
|
|
11380
11540
|
|
|
11541
|
+
|
|
11381
11542
|
|
|
11382
11543
|
|
|
11383
11544
|
|
|
@@ -11395,6 +11556,7 @@ class Participant extends Emitter {
|
|
|
11395
11556
|
|
|
11396
11557
|
|
|
11397
11558
|
|
|
11559
|
+
|
|
11398
11560
|
|
|
11399
11561
|
/**
|
|
11400
11562
|
* @param room Room The room where the participant is
|
|
@@ -11418,6 +11580,7 @@ class Participant extends Emitter {
|
|
|
11418
11580
|
this.screensharing = false;
|
|
11419
11581
|
this.isOnHold = false;
|
|
11420
11582
|
this.extra = extra;
|
|
11583
|
+
this.banned = false;
|
|
11421
11584
|
|
|
11422
11585
|
this.ON_UPDATED = 'participant/ON_UPDATED';
|
|
11423
11586
|
this.ON_START_TALKING = 'participant/ON_START_TALKING';
|
|
@@ -11434,6 +11597,7 @@ class Participant extends Emitter {
|
|
|
11434
11597
|
this.ON_EXTRA_CHANGE = 'participant/ON_EXTRA_CHANGE';
|
|
11435
11598
|
this.ON_HOLD = 'participant/ON_HOLD';
|
|
11436
11599
|
this.ON_RESUME = 'participant/ON_RESUME';
|
|
11600
|
+
this.ON_BAN = 'participant/ON_BAN';
|
|
11437
11601
|
}
|
|
11438
11602
|
|
|
11439
11603
|
triggerEvent(name , ...args ) {
|
|
@@ -11474,6 +11638,10 @@ class Participant extends Emitter {
|
|
|
11474
11638
|
status.extra = this.extra;
|
|
11475
11639
|
break;
|
|
11476
11640
|
}
|
|
11641
|
+
case this.ON_BAN: {
|
|
11642
|
+
status.banned = true;
|
|
11643
|
+
break;
|
|
11644
|
+
}
|
|
11477
11645
|
}
|
|
11478
11646
|
|
|
11479
11647
|
if (broadcast) {
|
|
@@ -11576,6 +11744,11 @@ class Participant extends Emitter {
|
|
|
11576
11744
|
this.triggerUpdate(this.ON_RESUME, broadcast);
|
|
11577
11745
|
}
|
|
11578
11746
|
|
|
11747
|
+
onBan(broadcast = true) {
|
|
11748
|
+
this.banned = true;
|
|
11749
|
+
this.triggerUpdate(this.ON_BAN, broadcast);
|
|
11750
|
+
}
|
|
11751
|
+
|
|
11579
11752
|
getStatus() {
|
|
11580
11753
|
return {
|
|
11581
11754
|
callId: this.callId,
|
|
@@ -11622,6 +11795,10 @@ class Participant extends Emitter {
|
|
|
11622
11795
|
}
|
|
11623
11796
|
}
|
|
11624
11797
|
|
|
11798
|
+
if (status.banned) {
|
|
11799
|
+
this.onBan(false);
|
|
11800
|
+
}
|
|
11801
|
+
|
|
11625
11802
|
// Poor man's object comparison
|
|
11626
11803
|
if (typeof status.extra !== 'undefined' && JSON.stringify(this.extra) !== JSON.stringify(status.extra)) {
|
|
11627
11804
|
this.extra = { ...this.extra, ...status.extra };
|
|
@@ -11649,6 +11826,28 @@ class Participant extends Emitter {
|
|
|
11649
11826
|
this.streams = streams;
|
|
11650
11827
|
this.videoStreams = streams;
|
|
11651
11828
|
}
|
|
11829
|
+
|
|
11830
|
+
async ban(apiRequestDelay = null) {
|
|
11831
|
+
const { meetingUuid } = this.room;
|
|
11832
|
+
if (!meetingUuid) {
|
|
11833
|
+
throw new Error('Attempting to ban a participant without a `meetingUuid`');
|
|
11834
|
+
}
|
|
11835
|
+
|
|
11836
|
+
// this notifies all that someone is being banned
|
|
11837
|
+
this.onBan(true);
|
|
11838
|
+
|
|
11839
|
+
// this allows to delay the actual ban, in order for the banned participant as well as others to react to the situation
|
|
11840
|
+
if (apiRequestDelay) {
|
|
11841
|
+
await this.delay(apiRequestDelay);
|
|
11842
|
+
}
|
|
11843
|
+
|
|
11844
|
+
// proceed with the actual kick
|
|
11845
|
+
return getApiClient().calld.banMeetingParticipant(meetingUuid, this.callId);
|
|
11846
|
+
}
|
|
11847
|
+
|
|
11848
|
+
async delay(ms ) {
|
|
11849
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
11850
|
+
}
|
|
11652
11851
|
}
|
|
11653
11852
|
|
|
11654
11853
|
//
|
|
@@ -11801,7 +12000,7 @@ class Room$1 extends Emitter {
|
|
|
11801
12000
|
logger$3.info('connecting to room', { extension, audioOnly, room: !!room });
|
|
11802
12001
|
|
|
11803
12002
|
if (!room) {
|
|
11804
|
-
await Wazo.Phone.connect();
|
|
12003
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
11805
12004
|
|
|
11806
12005
|
const withCamera = constraints && !!constraints.video;
|
|
11807
12006
|
|
|
@@ -12246,7 +12445,7 @@ class Room$1 extends Emitter {
|
|
|
12246
12445
|
const participant = this._getParticipantFromCallId(status.callId);
|
|
12247
12446
|
|
|
12248
12447
|
if (participant) {
|
|
12249
|
-
// we're
|
|
12448
|
+
// we're receiving, so no need to broadcast
|
|
12250
12449
|
participant.updateStatus(status, false);
|
|
12251
12450
|
}
|
|
12252
12451
|
break;
|
|
@@ -12513,7 +12712,7 @@ class SipRoom extends Room$1 {
|
|
|
12513
12712
|
logger$2.info('connecting to sip room', { extension, audioOnly, room: !!room });
|
|
12514
12713
|
|
|
12515
12714
|
if (!room) {
|
|
12516
|
-
await Wazo.Phone.connect();
|
|
12715
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
12517
12716
|
|
|
12518
12717
|
const withCamera = constraints && !!constraints.video;
|
|
12519
12718
|
|
package/esm/simple/Websocket.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,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 WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -1029,6 +1031,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
1029
1031
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
1030
1032
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
1031
1033
|
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
1034
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED: MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
1032
1035
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
1033
1036
|
'default': WebSocketClient
|
|
1034
1037
|
});
|