@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
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 ) =>
|
|
@@ -5903,6 +6043,24 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5903
6043
|
return fixed;
|
|
5904
6044
|
};
|
|
5905
6045
|
|
|
6046
|
+
const addIcesInAllBundles = (sdp ) => {
|
|
6047
|
+
const parsedSdp = sdpParser.parse(sdp);
|
|
6048
|
+
|
|
6049
|
+
const mediaWithCandidate = parsedSdp.media.find(media => !!media.candidates);
|
|
6050
|
+
if (!mediaWithCandidate) {
|
|
6051
|
+
return sdp;
|
|
6052
|
+
}
|
|
6053
|
+
|
|
6054
|
+
const { candidates } = mediaWithCandidate;
|
|
6055
|
+
|
|
6056
|
+
parsedSdp.media = parsedSdp.media.map(media => ({
|
|
6057
|
+
...media,
|
|
6058
|
+
candidates: media.candidates || candidates,
|
|
6059
|
+
}));
|
|
6060
|
+
|
|
6061
|
+
return sdpParser.write(parsedSdp);
|
|
6062
|
+
};
|
|
6063
|
+
|
|
5906
6064
|
/* global RTCSessionDescriptionInit, navigator */
|
|
5907
6065
|
|
|
5908
6066
|
const wazoLogger = IssueReporter$1 ? IssueReporter$1.loggerFor('webrtc-sdh') : console;
|
|
@@ -6032,7 +6190,10 @@ class WazoSessionDescriptionHandler extends SessionDescriptionHandler {
|
|
|
6032
6190
|
|
|
6033
6191
|
// Check if we got ICEs
|
|
6034
6192
|
if (sdp.indexOf('a=candidate') !== -1) {
|
|
6035
|
-
return
|
|
6193
|
+
return {
|
|
6194
|
+
type: description.type,
|
|
6195
|
+
sdp: addIcesInAllBundles(sdp),
|
|
6196
|
+
};
|
|
6036
6197
|
}
|
|
6037
6198
|
|
|
6038
6199
|
wazoLogger.info('No ICE candidates found in SDP, fixing it with gathered ices', this.gatheredCandidates);
|
|
@@ -7492,7 +7653,7 @@ class WebRTCClient extends Emitter {
|
|
|
7492
7653
|
});
|
|
7493
7654
|
}
|
|
7494
7655
|
|
|
7495
|
-
changeAudioInputDevice(id , session , force ) {
|
|
7656
|
+
async changeAudioInputDevice(id , session , force ) {
|
|
7496
7657
|
const currentId = this.getAudioDeviceId();
|
|
7497
7658
|
logger$9.info('setting audio input device', { id, currentId, session: !!session });
|
|
7498
7659
|
|
|
@@ -7500,33 +7661,50 @@ class WebRTCClient extends Emitter {
|
|
|
7500
7661
|
return null;
|
|
7501
7662
|
}
|
|
7502
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
|
+
|
|
7503
7682
|
// let's update the local audio value
|
|
7504
7683
|
if (this.audio) {
|
|
7505
7684
|
this.audio = {
|
|
7506
7685
|
deviceId: {
|
|
7507
|
-
exact:
|
|
7686
|
+
exact: deviceId,
|
|
7508
7687
|
},
|
|
7509
7688
|
};
|
|
7510
7689
|
}
|
|
7511
7690
|
|
|
7512
|
-
if (session) {
|
|
7691
|
+
if (session && navigator.mediaDevices) {
|
|
7513
7692
|
const sdh = session.sessionDescriptionHandler;
|
|
7514
7693
|
const pc = sdh.peerConnection;
|
|
7515
7694
|
|
|
7516
|
-
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
|
|
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);
|
|
7520
7699
|
|
|
7521
|
-
|
|
7522
|
-
|
|
7523
|
-
|
|
7524
|
-
}
|
|
7525
|
-
sender.replaceTrack(audioTrack);
|
|
7700
|
+
if (sender) {
|
|
7701
|
+
if (sender.track) {
|
|
7702
|
+
audioTrack.enabled = sender.track.enabled;
|
|
7526
7703
|
}
|
|
7704
|
+
sender.replaceTrack(audioTrack);
|
|
7705
|
+
}
|
|
7527
7706
|
|
|
7528
|
-
|
|
7529
|
-
});
|
|
7707
|
+
return stream;
|
|
7530
7708
|
}
|
|
7531
7709
|
}
|
|
7532
7710
|
|
|
@@ -7546,14 +7724,14 @@ class WebRTCClient extends Emitter {
|
|
|
7546
7724
|
return null;
|
|
7547
7725
|
}
|
|
7548
7726
|
|
|
7549
|
-
// let's
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
}
|
|
7556
|
-
}
|
|
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
|
+
};
|
|
7557
7735
|
}
|
|
7558
7736
|
|
|
7559
7737
|
changeSessionVideoInputDevice(id , session ) {
|
|
@@ -9155,9 +9333,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9155
9333
|
|
|
9156
9334
|
try {
|
|
9157
9335
|
if (this.currentScreenShare.stream) {
|
|
9158
|
-
this.currentScreenShare.stream.getTracks()
|
|
9159
|
-
.filter(track => track.kind === 'video')
|
|
9160
|
-
.forEach(track => track.stop());
|
|
9336
|
+
this.currentScreenShare.stream.getTracks().forEach(track => track.stop());
|
|
9161
9337
|
}
|
|
9162
9338
|
|
|
9163
9339
|
if (restoreLocalStream) {
|
|
@@ -10831,6 +11007,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
|
|
|
10831
11007
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
10832
11008
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
10833
11009
|
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
11010
|
+
const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
|
|
10834
11011
|
|
|
10835
11012
|
const BLACKLIST_EVENTS = [
|
|
10836
11013
|
CHAT_MESSAGE_SENT,
|
|
@@ -11182,6 +11359,7 @@ WebSocketClient.eventLists = [
|
|
|
11182
11359
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11183
11360
|
CONFERENCE_ADHOC_DELETED,
|
|
11184
11361
|
MEETING_USER_PROGRESS,
|
|
11362
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11185
11363
|
];
|
|
11186
11364
|
|
|
11187
11365
|
var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -11253,6 +11431,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
|
|
|
11253
11431
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
11254
11432
|
CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
|
|
11255
11433
|
MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
|
|
11434
|
+
MEETING_USER_GUEST_AUTHORIZATION_CREATED: MEETING_USER_GUEST_AUTHORIZATION_CREATED,
|
|
11256
11435
|
HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
|
|
11257
11436
|
'default': WebSocketClient
|
|
11258
11437
|
});
|
|
@@ -11357,6 +11536,7 @@ class Participant extends Emitter {
|
|
|
11357
11536
|
|
|
11358
11537
|
|
|
11359
11538
|
|
|
11539
|
+
|
|
11360
11540
|
|
|
11361
11541
|
|
|
11362
11542
|
|
|
@@ -11374,6 +11554,7 @@ class Participant extends Emitter {
|
|
|
11374
11554
|
|
|
11375
11555
|
|
|
11376
11556
|
|
|
11557
|
+
|
|
11377
11558
|
|
|
11378
11559
|
/**
|
|
11379
11560
|
* @param room Room The room where the participant is
|
|
@@ -11397,6 +11578,7 @@ class Participant extends Emitter {
|
|
|
11397
11578
|
this.screensharing = false;
|
|
11398
11579
|
this.isOnHold = false;
|
|
11399
11580
|
this.extra = extra;
|
|
11581
|
+
this.banned = false;
|
|
11400
11582
|
|
|
11401
11583
|
this.ON_UPDATED = 'participant/ON_UPDATED';
|
|
11402
11584
|
this.ON_START_TALKING = 'participant/ON_START_TALKING';
|
|
@@ -11413,6 +11595,7 @@ class Participant extends Emitter {
|
|
|
11413
11595
|
this.ON_EXTRA_CHANGE = 'participant/ON_EXTRA_CHANGE';
|
|
11414
11596
|
this.ON_HOLD = 'participant/ON_HOLD';
|
|
11415
11597
|
this.ON_RESUME = 'participant/ON_RESUME';
|
|
11598
|
+
this.ON_BAN = 'participant/ON_BAN';
|
|
11416
11599
|
}
|
|
11417
11600
|
|
|
11418
11601
|
triggerEvent(name , ...args ) {
|
|
@@ -11453,6 +11636,10 @@ class Participant extends Emitter {
|
|
|
11453
11636
|
status.extra = this.extra;
|
|
11454
11637
|
break;
|
|
11455
11638
|
}
|
|
11639
|
+
case this.ON_BAN: {
|
|
11640
|
+
status.banned = true;
|
|
11641
|
+
break;
|
|
11642
|
+
}
|
|
11456
11643
|
}
|
|
11457
11644
|
|
|
11458
11645
|
if (broadcast) {
|
|
@@ -11555,6 +11742,11 @@ class Participant extends Emitter {
|
|
|
11555
11742
|
this.triggerUpdate(this.ON_RESUME, broadcast);
|
|
11556
11743
|
}
|
|
11557
11744
|
|
|
11745
|
+
onBan(broadcast = true) {
|
|
11746
|
+
this.banned = true;
|
|
11747
|
+
this.triggerUpdate(this.ON_BAN, broadcast);
|
|
11748
|
+
}
|
|
11749
|
+
|
|
11558
11750
|
getStatus() {
|
|
11559
11751
|
return {
|
|
11560
11752
|
callId: this.callId,
|
|
@@ -11601,6 +11793,10 @@ class Participant extends Emitter {
|
|
|
11601
11793
|
}
|
|
11602
11794
|
}
|
|
11603
11795
|
|
|
11796
|
+
if (status.banned) {
|
|
11797
|
+
this.onBan(false);
|
|
11798
|
+
}
|
|
11799
|
+
|
|
11604
11800
|
// Poor man's object comparison
|
|
11605
11801
|
if (typeof status.extra !== 'undefined' && JSON.stringify(this.extra) !== JSON.stringify(status.extra)) {
|
|
11606
11802
|
this.extra = { ...this.extra, ...status.extra };
|
|
@@ -11628,6 +11824,28 @@ class Participant extends Emitter {
|
|
|
11628
11824
|
this.streams = streams;
|
|
11629
11825
|
this.videoStreams = streams;
|
|
11630
11826
|
}
|
|
11827
|
+
|
|
11828
|
+
async ban(apiRequestDelay = null) {
|
|
11829
|
+
const { meetingUuid } = this.room;
|
|
11830
|
+
if (!meetingUuid) {
|
|
11831
|
+
throw new Error('Attempting to ban a participant without a `meetingUuid`');
|
|
11832
|
+
}
|
|
11833
|
+
|
|
11834
|
+
// this notifies all that someone is being banned
|
|
11835
|
+
this.onBan(true);
|
|
11836
|
+
|
|
11837
|
+
// this allows to delay the actual ban, in order for the banned participant as well as others to react to the situation
|
|
11838
|
+
if (apiRequestDelay) {
|
|
11839
|
+
await this.delay(apiRequestDelay);
|
|
11840
|
+
}
|
|
11841
|
+
|
|
11842
|
+
// proceed with the actual kick
|
|
11843
|
+
return getApiClient().calld.banMeetingParticipant(meetingUuid, this.callId);
|
|
11844
|
+
}
|
|
11845
|
+
|
|
11846
|
+
async delay(ms ) {
|
|
11847
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
11848
|
+
}
|
|
11631
11849
|
}
|
|
11632
11850
|
|
|
11633
11851
|
//
|
|
@@ -11780,7 +11998,7 @@ class Room$1 extends Emitter {
|
|
|
11780
11998
|
logger$3.info('connecting to room', { extension, audioOnly, room: !!room });
|
|
11781
11999
|
|
|
11782
12000
|
if (!room) {
|
|
11783
|
-
await Wazo.Phone.connect();
|
|
12001
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
11784
12002
|
|
|
11785
12003
|
const withCamera = constraints && !!constraints.video;
|
|
11786
12004
|
|
|
@@ -12225,7 +12443,7 @@ class Room$1 extends Emitter {
|
|
|
12225
12443
|
const participant = this._getParticipantFromCallId(status.callId);
|
|
12226
12444
|
|
|
12227
12445
|
if (participant) {
|
|
12228
|
-
// we're
|
|
12446
|
+
// we're receiving, so no need to broadcast
|
|
12229
12447
|
participant.updateStatus(status, false);
|
|
12230
12448
|
}
|
|
12231
12449
|
break;
|
|
@@ -12492,7 +12710,7 @@ class SipRoom extends Room$1 {
|
|
|
12492
12710
|
logger$2.info('connecting to sip room', { extension, audioOnly, room: !!room });
|
|
12493
12711
|
|
|
12494
12712
|
if (!room) {
|
|
12495
|
-
await Wazo.Phone.connect();
|
|
12713
|
+
await Wazo.Phone.connect({ media: constraints });
|
|
12496
12714
|
|
|
12497
12715
|
const withCamera = constraints && !!constraints.video;
|
|
12498
12716
|
|
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
|
});
|