@webex/plugin-meetings 3.0.0-beta.174 → 3.0.0-beta.176
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/annotation/annotation.types.js.map +1 -1
- package/dist/annotation/index.js +2 -19
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +11 -2
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +143 -5
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +18 -3
- package/dist/meeting/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +0 -1
- package/dist/types/annotation/index.d.ts +0 -7
- package/dist/types/constants.d.ts +9 -0
- package/dist/types/meeting/index.d.ts +4 -0
- package/package.json +19 -19
- package/src/annotation/annotation.types.ts +0 -2
- package/src/annotation/index.ts +0 -15
- package/src/constants.ts +9 -0
- package/src/interpretation/README.md +11 -2
- package/src/interpretation/index.ts +140 -4
- package/src/meeting/index.ts +25 -0
- package/test/unit/spec/annotation/index.ts +0 -18
- package/test/unit/spec/interpretation/index.ts +250 -9
- package/test/unit/spec/interpretation/siLanguage.ts +2 -0
- package/test/unit/spec/meeting/index.js +57 -16
|
@@ -26,6 +26,8 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
26
26
|
props: {
|
|
27
27
|
locusUrl: 'string',
|
|
28
28
|
// appears current meeting's locus url
|
|
29
|
+
approvalUrl: 'string',
|
|
30
|
+
// appears current meeting's approval url for handoff between interpreters
|
|
29
31
|
originalLanguage: 'string',
|
|
30
32
|
// appears current meeting's original language
|
|
31
33
|
sourceLanguage: 'string',
|
|
@@ -44,19 +46,19 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
44
46
|
// appears the ability to manage interpreters
|
|
45
47
|
supportLanguages: 'array',
|
|
46
48
|
// appears the support languages
|
|
47
|
-
|
|
49
|
+
hostSIEnabled: 'boolean' // appears the meeting host feature of SI enabled
|
|
48
50
|
},
|
|
49
51
|
|
|
50
52
|
derived: {
|
|
51
53
|
shouldQuerySupportLanguages: {
|
|
52
54
|
cache: false,
|
|
53
|
-
deps: ['canManageInterpreters', '
|
|
55
|
+
deps: ['canManageInterpreters', 'hostSIEnabled'],
|
|
54
56
|
/**
|
|
55
57
|
* Returns should query support languages or not
|
|
56
58
|
* @returns {boolean}
|
|
57
59
|
*/
|
|
58
60
|
fn: function fn() {
|
|
59
|
-
return !!(this.canManageInterpreters && this.
|
|
61
|
+
return !!(this.canManageInterpreters && this.hostSIEnabled);
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
64
|
},
|
|
@@ -71,6 +73,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
71
73
|
_this.querySupportLanguages();
|
|
72
74
|
}
|
|
73
75
|
});
|
|
76
|
+
this.listenToHandoffRequests();
|
|
74
77
|
},
|
|
75
78
|
/**
|
|
76
79
|
* Calls this to clean up listeners
|
|
@@ -87,6 +90,14 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
87
90
|
locusUrlUpdate: function locusUrlUpdate(locusUrl) {
|
|
88
91
|
this.set('locusUrl', locusUrl);
|
|
89
92
|
},
|
|
93
|
+
/**
|
|
94
|
+
* Update the approval url for handoff
|
|
95
|
+
* @param {string} approvalUrl // approval url
|
|
96
|
+
* @returns {void}
|
|
97
|
+
*/
|
|
98
|
+
approvalUrlUpdate: function approvalUrlUpdate(approvalUrl) {
|
|
99
|
+
this.set('approvalUrl', approvalUrl);
|
|
100
|
+
},
|
|
90
101
|
/**
|
|
91
102
|
* Update whether self has capability to manage interpreters (only host can manage it)
|
|
92
103
|
* @param {boolean} canManageInterpreters
|
|
@@ -95,13 +106,20 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
95
106
|
updateCanManageInterpreters: function updateCanManageInterpreters(canManageInterpreters) {
|
|
96
107
|
this.set('canManageInterpreters', canManageInterpreters);
|
|
97
108
|
},
|
|
109
|
+
/**
|
|
110
|
+
* Update whether the meeting's host si is enabled or not
|
|
111
|
+
* @param {boolean} hostSIEnabled
|
|
112
|
+
* @returns {void}
|
|
113
|
+
*/
|
|
114
|
+
updateHostSIEnabled: function updateHostSIEnabled(hostSIEnabled) {
|
|
115
|
+
this.set('hostSIEnabled', hostSIEnabled);
|
|
116
|
+
},
|
|
98
117
|
/**
|
|
99
118
|
* Update the interpretation languages channels which user can choose to subscribe
|
|
100
119
|
* @param {Object} interpretation
|
|
101
120
|
* @returns {void}
|
|
102
121
|
*/
|
|
103
122
|
updateInterpretation: function updateInterpretation(interpretation) {
|
|
104
|
-
this.set('siEnabled', !!interpretation);
|
|
105
123
|
this.siLanguages.set((interpretation === null || interpretation === void 0 ? void 0 : interpretation.siLanguages) || []);
|
|
106
124
|
},
|
|
107
125
|
/**
|
|
@@ -207,7 +225,127 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
207
225
|
throw error;
|
|
208
226
|
});
|
|
209
227
|
},
|
|
210
|
-
|
|
228
|
+
/**
|
|
229
|
+
* Sets up a listener for handoff requests from mercury
|
|
230
|
+
* @returns {void}
|
|
231
|
+
*/
|
|
232
|
+
listenToHandoffRequests: function listenToHandoffRequests() {
|
|
233
|
+
var _this3 = this;
|
|
234
|
+
this.listenTo(this.webex.internal.mercury, 'event:locus.approval_request', function (event) {
|
|
235
|
+
var _event$data, _event$data$approval;
|
|
236
|
+
if ((event === null || event === void 0 ? void 0 : (_event$data = event.data) === null || _event$data === void 0 ? void 0 : (_event$data$approval = _event$data.approval) === null || _event$data$approval === void 0 ? void 0 : _event$data$approval.resourceType) === _constants.INTERPRETATION.RESOURCE_TYPE) {
|
|
237
|
+
var _receivers$;
|
|
238
|
+
var _event$data$approval2 = event.data.approval,
|
|
239
|
+
receivers = _event$data$approval2.receivers,
|
|
240
|
+
initiator = _event$data$approval2.initiator,
|
|
241
|
+
actionType = _event$data$approval2.actionType,
|
|
242
|
+
url = _event$data$approval2.url;
|
|
243
|
+
var receiverId = receivers === null || receivers === void 0 ? void 0 : (_receivers$ = receivers[0]) === null || _receivers$ === void 0 ? void 0 : _receivers$.participantId;
|
|
244
|
+
var isReceiver = !!receiverId && receiverId === _this3.selfParticipantId;
|
|
245
|
+
var senderId = initiator === null || initiator === void 0 ? void 0 : initiator.participantId;
|
|
246
|
+
var isSender = !!senderId && senderId === _this3.selfParticipantId;
|
|
247
|
+
if (!isReceiver && !isSender) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
_this3.trigger(_constants.INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED, {
|
|
251
|
+
actionType: actionType,
|
|
252
|
+
isReceiver: isReceiver,
|
|
253
|
+
isSender: isSender,
|
|
254
|
+
senderId: senderId,
|
|
255
|
+
receiverId: receiverId,
|
|
256
|
+
url: url
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
},
|
|
261
|
+
/**
|
|
262
|
+
* handoff the active interpreter role to another interpreter in same group, only the interpreter is allowed to call this api
|
|
263
|
+
* @param {string} participantId the participant id you want to hand off
|
|
264
|
+
* @returns {Promise}
|
|
265
|
+
*/
|
|
266
|
+
handoffInterpreter: function handoffInterpreter(participantId) {
|
|
267
|
+
if (!participantId) {
|
|
268
|
+
return _promise.default.reject(new Error('Missing target participant id'));
|
|
269
|
+
}
|
|
270
|
+
if (!this.approvalUrl) {
|
|
271
|
+
return _promise.default.reject(new Error('Missing approval url'));
|
|
272
|
+
}
|
|
273
|
+
return this.request({
|
|
274
|
+
method: _constants.HTTP_VERBS.POST,
|
|
275
|
+
uri: this.approvalUrl,
|
|
276
|
+
body: {
|
|
277
|
+
actionType: _constants.INTERPRETATION.ACTION_TYPE.OFFERED,
|
|
278
|
+
resourceType: _constants.INTERPRETATION.RESOURCE_TYPE,
|
|
279
|
+
receivers: [{
|
|
280
|
+
participantId: participantId
|
|
281
|
+
}]
|
|
282
|
+
}
|
|
283
|
+
}).catch(function (error) {
|
|
284
|
+
_loggerProxy.default.logger.error('Meeting:interpretation#handoffInterpreter failed', error);
|
|
285
|
+
throw error;
|
|
286
|
+
});
|
|
287
|
+
},
|
|
288
|
+
/**
|
|
289
|
+
* the in-active interpreter request to hand off the active role to self
|
|
290
|
+
* @returns {Promise}
|
|
291
|
+
*/
|
|
292
|
+
requestHandoff: function requestHandoff() {
|
|
293
|
+
if (!this.approvalUrl) {
|
|
294
|
+
return _promise.default.reject(new Error('Missing approval url'));
|
|
295
|
+
}
|
|
296
|
+
return this.request({
|
|
297
|
+
method: _constants.HTTP_VERBS.POST,
|
|
298
|
+
uri: this.approvalUrl,
|
|
299
|
+
body: {
|
|
300
|
+
actionType: _constants.INTERPRETATION.ACTION_TYPE.REQUESTED,
|
|
301
|
+
resourceType: _constants.INTERPRETATION.RESOURCE_TYPE
|
|
302
|
+
}
|
|
303
|
+
}).catch(function (error) {
|
|
304
|
+
_loggerProxy.default.logger.error('Meeting:interpretation#requestHandoff failed', error);
|
|
305
|
+
throw error;
|
|
306
|
+
});
|
|
307
|
+
},
|
|
308
|
+
/**
|
|
309
|
+
* accept the request of handoff
|
|
310
|
+
* @param {String} url the url get from last approval event
|
|
311
|
+
* @returns {Promise}
|
|
312
|
+
*/
|
|
313
|
+
acceptRequest: function acceptRequest(url) {
|
|
314
|
+
if (!url) {
|
|
315
|
+
return _promise.default.reject(new Error('Missing the url to accept'));
|
|
316
|
+
}
|
|
317
|
+
return this.request({
|
|
318
|
+
method: _constants.HTTP_VERBS.PUT,
|
|
319
|
+
uri: url,
|
|
320
|
+
body: {
|
|
321
|
+
actionType: _constants.INTERPRETATION.ACTION_TYPE.ACCEPTED
|
|
322
|
+
}
|
|
323
|
+
}).catch(function (error) {
|
|
324
|
+
_loggerProxy.default.logger.error('Meeting:interpretation#acceptRequest failed', error);
|
|
325
|
+
throw error;
|
|
326
|
+
});
|
|
327
|
+
},
|
|
328
|
+
/**
|
|
329
|
+
* decline the request of handoff
|
|
330
|
+
* @param {String} url the url get from last approval event
|
|
331
|
+
* @returns {Promise}
|
|
332
|
+
*/
|
|
333
|
+
declineRequest: function declineRequest(url) {
|
|
334
|
+
if (!url) {
|
|
335
|
+
return _promise.default.reject(new Error('Missing the url to decline'));
|
|
336
|
+
}
|
|
337
|
+
return this.request({
|
|
338
|
+
method: _constants.HTTP_VERBS.PUT,
|
|
339
|
+
uri: url,
|
|
340
|
+
body: {
|
|
341
|
+
actionType: _constants.INTERPRETATION.ACTION_TYPE.DECLINED
|
|
342
|
+
}
|
|
343
|
+
}).catch(function (error) {
|
|
344
|
+
_loggerProxy.default.logger.error('Meeting:interpretation#declineRequest failed', error);
|
|
345
|
+
throw error;
|
|
346
|
+
});
|
|
347
|
+
},
|
|
348
|
+
version: "3.0.0-beta.176"
|
|
211
349
|
});
|
|
212
350
|
var _default = SimultaneousInterpretation;
|
|
213
351
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SimultaneousInterpretation","WebexPlugin","extend","namespace","MEETINGS","collections","siLanguages","SILanguageCollection","props","locusUrl","originalLanguage","sourceLanguage","targetLanguage","receiveLanguage","order","isActive","selfParticipantId","canManageInterpreters","supportLanguages","siEnabled","derived","shouldQuerySupportLanguages","cache","deps","fn","initialize","listenTo","querySupportLanguages","cleanUp","stopListening","locusUrlUpdate","set","updateCanManageInterpreters","updateInterpretation","interpretation","updateSelfInterpretation","request","method","HTTP_VERBS","GET","uri","then","result","body","trigger","INTERPRETATION","EVENTS","SUPPORT_LANGUAGES_UPDATE","catch","error","LoggerProxy","logger","getInterpreters","updateInterpreters","interpreters","PATCH","changeDirection","reject","Error"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, INTERPRETATION, MEETINGS} from '../constants';\n\nimport SILanguageCollection from './collection';\n\n/**\n * @class SimultaneousInterpretation\n */\nconst SimultaneousInterpretation = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n siLanguages: SILanguageCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current meeting's locus url\n originalLanguage: 'string', // appears current meeting's original language\n sourceLanguage: 'string', // appears self interpreter's source language\n targetLanguage: 'string', // appears self interpreter's target language\n receiveLanguage: 'string', // appears self's receive language\n order: 'number', // appears the order of self as interpreter\n isActive: 'boolean', // appears self is interpreter and is active\n selfParticipantId: 'string', // appears the self participant id\n canManageInterpreters: 'boolean', // appears the ability to manage interpreters\n supportLanguages: 'array', // appears the support languages\n siEnabled: 'boolean', // appears the meeting enabled SI\n },\n derived: {\n shouldQuerySupportLanguages: {\n cache: false,\n deps: ['canManageInterpreters', 'siEnabled'],\n /**\n * Returns should query support languages or not\n * @returns {boolean}\n */\n fn() {\n return !!(this.canManageInterpreters && this.siEnabled);\n },\n },\n },\n /**\n * initialize for interpretation\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:shouldQuerySupportLanguages', () => {\n if (this.canManageInterpreters && !this.supportLanguages) {\n this.querySupportLanguages();\n }\n });\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n /**\n * Update whether self has capability to manage interpreters (only host can manage it)\n * @param {boolean} canManageInterpreters\n * @returns {void}\n */\n updateCanManageInterpreters(canManageInterpreters) {\n this.set('canManageInterpreters', canManageInterpreters);\n },\n /**\n * Update the interpretation languages channels which user can choose to subscribe\n * @param {Object} interpretation\n * @returns {void}\n */\n updateInterpretation(interpretation) {\n this.set('siEnabled', !!interpretation);\n this.siLanguages.set(interpretation?.siLanguages || []);\n },\n /**\n * Update self's interpretation information (self is interpreter)\n * @param {Object} interpretation\n * @param {String} selfParticipantId\n * @returns {void}\n */\n updateSelfInterpretation({interpretation, selfParticipantId}) {\n const {originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage} =\n interpretation || {};\n this.set({originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage});\n this.set('selfParticipantId', selfParticipantId);\n },\n /**\n * query interpretation languages\n * @returns {Promise}\n */\n querySupportLanguages() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/languages/interpretation`,\n })\n .then((result) => {\n this.set('supportLanguages', result.body?.siLanguages);\n this.trigger(INTERPRETATION.EVENTS.SUPPORT_LANGUAGES_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#querySupportLanguages failed', error);\n throw error;\n });\n },\n /**\n * get interpreters of the meeting\n * @returns {Promise}\n */\n getInterpreters() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/interpretation/interpreters`,\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#getInterpreters failed', error);\n throw error;\n });\n },\n /**\n * update interpreters of the meeting\n * @param {Array} interpreters\n * @returns {Promise}\n */\n updateInterpreters(interpreters) {\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n interpretation: {\n interpreters,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#updateInterpreters failed', error);\n throw error;\n });\n },\n /**\n * Change direction of interpretation for an interpreter participant\n * @returns {Promise}\n */\n changeDirection() {\n if (!this.sourceLanguage || !this.targetLanguage) {\n return Promise.reject(new Error('Missing sourceLanguage or targetLanguage'));\n }\n\n if (!this.selfParticipantId) {\n return Promise.reject(new Error('Missing self participant id'));\n }\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/participant/${this.selfParticipantId}/controls`,\n body: {\n interpretation: {\n sourceLanguage: this.targetLanguage,\n targetLanguage: this.sourceLanguage,\n isActive: this.isActive,\n order: this.order,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#changeDirection failed', error);\n throw error;\n });\n },\n});\n\nexport default SimultaneousInterpretation;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["SimultaneousInterpretation","WebexPlugin","extend","namespace","MEETINGS","collections","siLanguages","SILanguageCollection","props","locusUrl","approvalUrl","originalLanguage","sourceLanguage","targetLanguage","receiveLanguage","order","isActive","selfParticipantId","canManageInterpreters","supportLanguages","hostSIEnabled","derived","shouldQuerySupportLanguages","cache","deps","fn","initialize","listenTo","querySupportLanguages","listenToHandoffRequests","cleanUp","stopListening","locusUrlUpdate","set","approvalUrlUpdate","updateCanManageInterpreters","updateHostSIEnabled","updateInterpretation","interpretation","updateSelfInterpretation","request","method","HTTP_VERBS","GET","uri","then","result","body","trigger","INTERPRETATION","EVENTS","SUPPORT_LANGUAGES_UPDATE","catch","error","LoggerProxy","logger","getInterpreters","updateInterpreters","interpreters","PATCH","changeDirection","reject","Error","webex","internal","mercury","event","data","approval","resourceType","RESOURCE_TYPE","receivers","initiator","actionType","url","receiverId","participantId","isReceiver","senderId","isSender","HANDOFF_REQUESTS_ARRIVED","handoffInterpreter","POST","ACTION_TYPE","OFFERED","requestHandoff","REQUESTED","acceptRequest","PUT","ACCEPTED","declineRequest","DECLINED"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, INTERPRETATION, MEETINGS} from '../constants';\n\nimport SILanguageCollection from './collection';\n\n/**\n * @class SimultaneousInterpretation\n */\nconst SimultaneousInterpretation = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n siLanguages: SILanguageCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current meeting's locus url\n approvalUrl: 'string', // appears current meeting's approval url for handoff between interpreters\n originalLanguage: 'string', // appears current meeting's original language\n sourceLanguage: 'string', // appears self interpreter's source language\n targetLanguage: 'string', // appears self interpreter's target language\n receiveLanguage: 'string', // appears self's receive language\n order: 'number', // appears the order of self as interpreter\n isActive: 'boolean', // appears self is interpreter and is active\n selfParticipantId: 'string', // appears the self participant id\n canManageInterpreters: 'boolean', // appears the ability to manage interpreters\n supportLanguages: 'array', // appears the support languages\n hostSIEnabled: 'boolean', // appears the meeting host feature of SI enabled\n },\n derived: {\n shouldQuerySupportLanguages: {\n cache: false,\n deps: ['canManageInterpreters', 'hostSIEnabled'],\n /**\n * Returns should query support languages or not\n * @returns {boolean}\n */\n fn() {\n return !!(this.canManageInterpreters && this.hostSIEnabled);\n },\n },\n },\n /**\n * initialize for interpretation\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:shouldQuerySupportLanguages', () => {\n if (this.canManageInterpreters && !this.supportLanguages) {\n this.querySupportLanguages();\n }\n });\n this.listenToHandoffRequests();\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n /**\n * Update the approval url for handoff\n * @param {string} approvalUrl // approval url\n * @returns {void}\n */\n approvalUrlUpdate(approvalUrl) {\n this.set('approvalUrl', approvalUrl);\n },\n /**\n * Update whether self has capability to manage interpreters (only host can manage it)\n * @param {boolean} canManageInterpreters\n * @returns {void}\n */\n updateCanManageInterpreters(canManageInterpreters) {\n this.set('canManageInterpreters', canManageInterpreters);\n },\n /**\n * Update whether the meeting's host si is enabled or not\n * @param {boolean} hostSIEnabled\n * @returns {void}\n */\n updateHostSIEnabled(hostSIEnabled) {\n this.set('hostSIEnabled', hostSIEnabled);\n },\n /**\n * Update the interpretation languages channels which user can choose to subscribe\n * @param {Object} interpretation\n * @returns {void}\n */\n updateInterpretation(interpretation) {\n this.siLanguages.set(interpretation?.siLanguages || []);\n },\n /**\n * Update self's interpretation information (self is interpreter)\n * @param {Object} interpretation\n * @param {String} selfParticipantId\n * @returns {void}\n */\n updateSelfInterpretation({interpretation, selfParticipantId}) {\n const {originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage} =\n interpretation || {};\n this.set({originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage});\n this.set('selfParticipantId', selfParticipantId);\n },\n /**\n * query interpretation languages\n * @returns {Promise}\n */\n querySupportLanguages() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/languages/interpretation`,\n })\n .then((result) => {\n this.set('supportLanguages', result.body?.siLanguages);\n this.trigger(INTERPRETATION.EVENTS.SUPPORT_LANGUAGES_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#querySupportLanguages failed', error);\n throw error;\n });\n },\n /**\n * get interpreters of the meeting\n * @returns {Promise}\n */\n getInterpreters() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/interpretation/interpreters`,\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#getInterpreters failed', error);\n throw error;\n });\n },\n /**\n * update interpreters of the meeting\n * @param {Array} interpreters\n * @returns {Promise}\n */\n updateInterpreters(interpreters) {\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n interpretation: {\n interpreters,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#updateInterpreters failed', error);\n throw error;\n });\n },\n /**\n * Change direction of interpretation for an interpreter participant\n * @returns {Promise}\n */\n changeDirection() {\n if (!this.sourceLanguage || !this.targetLanguage) {\n return Promise.reject(new Error('Missing sourceLanguage or targetLanguage'));\n }\n\n if (!this.selfParticipantId) {\n return Promise.reject(new Error('Missing self participant id'));\n }\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/participant/${this.selfParticipantId}/controls`,\n body: {\n interpretation: {\n sourceLanguage: this.targetLanguage,\n targetLanguage: this.sourceLanguage,\n isActive: this.isActive,\n order: this.order,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#changeDirection failed', error);\n throw error;\n });\n },\n /**\n * Sets up a listener for handoff requests from mercury\n * @returns {void}\n */\n listenToHandoffRequests() {\n this.listenTo(this.webex.internal.mercury, 'event:locus.approval_request', (event) => {\n if (event?.data?.approval?.resourceType === INTERPRETATION.RESOURCE_TYPE) {\n const {receivers, initiator, actionType, url} = event.data.approval;\n const receiverId = receivers?.[0]?.participantId;\n const isReceiver = !!receiverId && receiverId === this.selfParticipantId;\n const senderId = initiator?.participantId;\n const isSender = !!senderId && senderId === this.selfParticipantId;\n if (!isReceiver && !isSender) {\n return;\n }\n this.trigger(INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED, {\n actionType,\n isReceiver,\n isSender,\n senderId,\n receiverId,\n url,\n });\n }\n });\n },\n /**\n * handoff the active interpreter role to another interpreter in same group, only the interpreter is allowed to call this api\n * @param {string} participantId the participant id you want to hand off\n * @returns {Promise}\n */\n handoffInterpreter(participantId) {\n if (!participantId) {\n return Promise.reject(new Error('Missing target participant id'));\n }\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.OFFERED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n receivers: [\n {\n participantId,\n },\n ],\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#handoffInterpreter failed', error);\n throw error;\n });\n },\n /**\n * the in-active interpreter request to hand off the active role to self\n * @returns {Promise}\n */\n requestHandoff() {\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.REQUESTED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#requestHandoff failed', error);\n throw error;\n });\n },\n /**\n * accept the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n acceptRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to accept'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.ACCEPTED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#acceptRequest failed', error);\n throw error;\n });\n },\n /**\n * decline the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n declineRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to decline'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.DECLINED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#declineRequest failed', error);\n throw error;\n });\n },\n});\n\nexport default SimultaneousInterpretation;\n"],"mappings":"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"}
|
package/dist/meeting/index.js
CHANGED
|
@@ -220,7 +220,11 @@ var ScreenShareFloorStatus;
|
|
|
220
220
|
* @instance
|
|
221
221
|
* @type {Object}
|
|
222
222
|
* @property {Boolean} memberId id of the meeting member that started screen share
|
|
223
|
+
* @property {String} url of this content share
|
|
224
|
+
* @property {String} shareInstanceId of this content share
|
|
225
|
+
* @property {Object} annotation Info of this content share
|
|
223
226
|
* @memberof Meeting
|
|
227
|
+
*
|
|
224
228
|
*/
|
|
225
229
|
/**
|
|
226
230
|
* Meeting Stopped Sharing Remote Event
|
|
@@ -2041,6 +2045,12 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2041
2045
|
function: 'setUpInterpretationListener'
|
|
2042
2046
|
}, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE);
|
|
2043
2047
|
});
|
|
2048
|
+
this.simultaneousInterpretation.on(_constants.INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED, function (payload) {
|
|
2049
|
+
_triggerProxy.default.trigger(_this5, {
|
|
2050
|
+
file: 'meeting/index',
|
|
2051
|
+
function: 'setUpInterpretationListener'
|
|
2052
|
+
}, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED, payload);
|
|
2053
|
+
});
|
|
2044
2054
|
}
|
|
2045
2055
|
|
|
2046
2056
|
/**
|
|
@@ -2564,7 +2574,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2564
2574
|
}, _constants.EVENT_TRIGGERS.MEETING_STARTED_SHARING_REMOTE, {
|
|
2565
2575
|
memberId: contentShare.beneficiaryId,
|
|
2566
2576
|
url: contentShare.url,
|
|
2567
|
-
shareInstanceId: contentShare.shareInstanceId
|
|
2577
|
+
shareInstanceId: contentShare.shareInstanceId,
|
|
2578
|
+
annotationInfo: contentShare.annotation
|
|
2568
2579
|
});
|
|
2569
2580
|
};
|
|
2570
2581
|
_context4.prev = 26;
|
|
@@ -2633,7 +2644,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2633
2644
|
}, _constants.EVENT_TRIGGERS.MEETING_STARTED_SHARING_REMOTE, {
|
|
2634
2645
|
memberId: contentShare.beneficiaryId,
|
|
2635
2646
|
url: contentShare.url,
|
|
2636
|
-
shareInstanceId: contentShare.shareInstanceId
|
|
2647
|
+
shareInstanceId: contentShare.shareInstanceId,
|
|
2648
|
+
annotationInfo: contentShare.annotation
|
|
2637
2649
|
});
|
|
2638
2650
|
_this14.members.locusMediaSharesUpdate(payload);
|
|
2639
2651
|
} else if (newShareStatus === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE) {
|
|
@@ -2708,11 +2720,12 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2708
2720
|
value: function setUpLocusServicesListener() {
|
|
2709
2721
|
var _this16 = this;
|
|
2710
2722
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_SERVICES, function (payload) {
|
|
2711
|
-
var _payload$services, _payload$services$rec, _this16$locusInfo, _this16$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap;
|
|
2723
|
+
var _payload$services, _payload$services$rec, _this16$locusInfo, _this16$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap;
|
|
2712
2724
|
_this16.recordingController.setServiceUrl(payload === null || payload === void 0 ? void 0 : (_payload$services = payload.services) === null || _payload$services === void 0 ? void 0 : (_payload$services$rec = _payload$services.record) === null || _payload$services$rec === void 0 ? void 0 : _payload$services$rec.url);
|
|
2713
2725
|
_this16.recordingController.setSessionId((_this16$locusInfo = _this16.locusInfo) === null || _this16$locusInfo === void 0 ? void 0 : (_this16$locusInfo$ful = _this16$locusInfo.fullState) === null || _this16$locusInfo$ful === void 0 ? void 0 : _this16$locusInfo$ful.sessionId);
|
|
2714
2726
|
_this16.breakouts.breakoutServiceUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services2 = payload.services) === null || _payload$services2 === void 0 ? void 0 : (_payload$services2$br = _payload$services2.breakout) === null || _payload$services2$br === void 0 ? void 0 : _payload$services2$br.url);
|
|
2715
2727
|
_this16.annotation.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services3 = payload.services) === null || _payload$services3 === void 0 ? void 0 : (_payload$services3$ap = _payload$services3.approval) === null || _payload$services3$ap === void 0 ? void 0 : _payload$services3$ap.url);
|
|
2728
|
+
_this16.simultaneousInterpretation.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services4 = payload.services) === null || _payload$services4 === void 0 ? void 0 : (_payload$services4$ap = _payload$services4.approval) === null || _payload$services4$ap === void 0 ? void 0 : _payload$services4$ap.url);
|
|
2716
2729
|
});
|
|
2717
2730
|
}
|
|
2718
2731
|
|
|
@@ -3349,6 +3362,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3349
3362
|
}, {
|
|
3350
3363
|
key: "parseMeetingInfo",
|
|
3351
3364
|
value: function parseMeetingInfo(meetingInfo) {
|
|
3365
|
+
var _webexMeetingInfo$mee;
|
|
3352
3366
|
var destination = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
3353
3367
|
var webexMeetingInfo = meetingInfo === null || meetingInfo === void 0 ? void 0 : meetingInfo.body;
|
|
3354
3368
|
// We try to use as much info from Locus meeting object, stored in destination
|
|
@@ -3379,6 +3393,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3379
3393
|
// Need to populate environment when sending CA event
|
|
3380
3394
|
this.environment = ((_locusMeetingObject7 = locusMeetingObject) === null || _locusMeetingObject7 === void 0 ? void 0 : _locusMeetingObject7.info.channel) || (webexMeetingInfo === null || webexMeetingInfo === void 0 ? void 0 : webexMeetingInfo.channel);
|
|
3381
3395
|
}
|
|
3396
|
+
this.simultaneousInterpretation.updateHostSIEnabled(!!(webexMeetingInfo !== null && webexMeetingInfo !== void 0 && (_webexMeetingInfo$mee = webexMeetingInfo.meetingSiteSetting) !== null && _webexMeetingInfo$mee !== void 0 && _webexMeetingInfo$mee.enableHostInterpreterControlSI));
|
|
3382
3397
|
}
|
|
3383
3398
|
|
|
3384
3399
|
/**
|