@webex/plugin-meetings 3.0.0-beta.400 → 3.0.0-beta.402
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/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/request.js +24 -20
- package/dist/meeting/request.js.map +1 -1
- package/dist/types/meeting/request.d.ts +2 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +19 -19
- package/src/meeting/request.ts +7 -0
- package/test/unit/spec/meeting/request.js +19 -1
package/dist/breakouts/index.js
CHANGED
|
@@ -1041,7 +1041,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
1041
1041
|
this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
|
|
1042
1042
|
}
|
|
1043
1043
|
},
|
|
1044
|
-
version: "3.0.0-beta.
|
|
1044
|
+
version: "3.0.0-beta.402"
|
|
1045
1045
|
});
|
|
1046
1046
|
var _default = Breakouts;
|
|
1047
1047
|
exports.default = _default;
|
package/dist/meeting/request.js
CHANGED
|
@@ -126,15 +126,16 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
126
126
|
* @param {String} options.locale,
|
|
127
127
|
* @param {Array} options.deviceCapabilities
|
|
128
128
|
* @param {boolean} options.liveAnnotationSupported
|
|
129
|
+
* @param {String} options.alias
|
|
129
130
|
* @returns {Promise}
|
|
130
131
|
*/
|
|
131
132
|
function () {
|
|
132
133
|
var _joinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
|
|
133
|
-
var asResourceOccupant, inviteeAddress, meetingNumber, permissionToken, deviceUrl, locusUrl, locusClusterUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, reachability, preferTranscoding, breakoutsSupported, locale, _options$deviceCapabi, deviceCapabilities, liveAnnotationSupported, ipVersion, url, joinCookie, body, clusterUrl;
|
|
134
|
+
var asResourceOccupant, inviteeAddress, meetingNumber, permissionToken, deviceUrl, locusUrl, locusClusterUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, reachability, preferTranscoding, breakoutsSupported, locale, _options$deviceCapabi, deviceCapabilities, liveAnnotationSupported, ipVersion, alias, url, joinCookie, body, clusterUrl;
|
|
134
135
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
135
136
|
while (1) switch (_context2.prev = _context2.next) {
|
|
136
137
|
case 0:
|
|
137
|
-
asResourceOccupant = options.asResourceOccupant, inviteeAddress = options.inviteeAddress, meetingNumber = options.meetingNumber, permissionToken = options.permissionToken, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, locusClusterUrl = options.locusClusterUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, reachability = options.reachability, preferTranscoding = options.preferTranscoding, breakoutsSupported = options.breakoutsSupported, locale = options.locale, _options$deviceCapabi = options.deviceCapabilities, deviceCapabilities = _options$deviceCapabi === void 0 ? [] : _options$deviceCapabi, liveAnnotationSupported = options.liveAnnotationSupported, ipVersion = options.ipVersion;
|
|
138
|
+
asResourceOccupant = options.asResourceOccupant, inviteeAddress = options.inviteeAddress, meetingNumber = options.meetingNumber, permissionToken = options.permissionToken, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, locusClusterUrl = options.locusClusterUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, reachability = options.reachability, preferTranscoding = options.preferTranscoding, breakoutsSupported = options.breakoutsSupported, locale = options.locale, _options$deviceCapabi = options.deviceCapabilities, deviceCapabilities = _options$deviceCapabi === void 0 ? [] : _options$deviceCapabi, liveAnnotationSupported = options.liveAnnotationSupported, ipVersion = options.ipVersion, alias = options.alias;
|
|
138
139
|
_loggerProxy.default.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
|
|
139
140
|
url = '';
|
|
140
141
|
_context2.next = 5;
|
|
@@ -161,6 +162,9 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
161
162
|
ipver: ipVersion
|
|
162
163
|
}
|
|
163
164
|
};
|
|
165
|
+
if (alias) {
|
|
166
|
+
body.alias = alias;
|
|
167
|
+
}
|
|
164
168
|
if (breakoutsSupported) {
|
|
165
169
|
deviceCapabilities.push(_constants.BREAKOUTS.BREAKOUTS_SUPPORTED);
|
|
166
170
|
}
|
|
@@ -202,44 +206,44 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
202
206
|
body.pin = pin;
|
|
203
207
|
}
|
|
204
208
|
if (!locusUrl) {
|
|
205
|
-
_context2.next =
|
|
209
|
+
_context2.next = 21;
|
|
206
210
|
break;
|
|
207
211
|
}
|
|
208
212
|
url = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT);
|
|
209
|
-
_context2.next =
|
|
213
|
+
_context2.next = 38;
|
|
210
214
|
break;
|
|
211
|
-
case
|
|
215
|
+
case 21:
|
|
212
216
|
if (!(inviteeAddress || meetingNumber)) {
|
|
213
|
-
_context2.next =
|
|
217
|
+
_context2.next = 38;
|
|
214
218
|
break;
|
|
215
219
|
}
|
|
216
|
-
_context2.prev =
|
|
220
|
+
_context2.prev = 22;
|
|
217
221
|
if (!locusClusterUrl) {
|
|
218
|
-
_context2.next =
|
|
222
|
+
_context2.next = 27;
|
|
219
223
|
break;
|
|
220
224
|
}
|
|
221
225
|
clusterUrl = "https://".concat(locusClusterUrl, "/locus/api/v1");
|
|
222
|
-
_context2.next =
|
|
226
|
+
_context2.next = 30;
|
|
223
227
|
break;
|
|
224
|
-
case
|
|
225
|
-
_context2.next =
|
|
228
|
+
case 27:
|
|
229
|
+
_context2.next = 29;
|
|
226
230
|
return this.webex.internal.services.waitForCatalog('postauth');
|
|
227
|
-
case
|
|
231
|
+
case 29:
|
|
228
232
|
// @ts-ignore
|
|
229
233
|
clusterUrl = this.webex.internal.services.get('locus');
|
|
230
|
-
case
|
|
234
|
+
case 30:
|
|
231
235
|
url = "".concat(clusterUrl, "/").concat(_constants.LOCI, "/").concat(_constants.CALL);
|
|
232
236
|
body.invitee = {
|
|
233
237
|
address: inviteeAddress || "wbxmn:".concat(meetingNumber)
|
|
234
238
|
};
|
|
235
|
-
_context2.next =
|
|
239
|
+
_context2.next = 38;
|
|
236
240
|
break;
|
|
237
|
-
case
|
|
238
|
-
_context2.prev =
|
|
239
|
-
_context2.t0 = _context2["catch"](
|
|
241
|
+
case 34:
|
|
242
|
+
_context2.prev = 34;
|
|
243
|
+
_context2.t0 = _context2["catch"](22);
|
|
240
244
|
_loggerProxy.default.logger.error("Meeting:request#joinMeeting Error Joining ".concat(inviteeAddress || meetingNumber, " --> ").concat(_context2.t0));
|
|
241
245
|
throw _context2.t0;
|
|
242
|
-
case
|
|
246
|
+
case 38:
|
|
243
247
|
// TODO: -- this will be resolved in SDK request
|
|
244
248
|
url = url.concat("?".concat(_constants.ALTERNATE_REDIRECT_TRUE));
|
|
245
249
|
if (resourceId === inviteeAddress) {
|
|
@@ -262,11 +266,11 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
262
266
|
uri: url,
|
|
263
267
|
body: body
|
|
264
268
|
}));
|
|
265
|
-
case
|
|
269
|
+
case 42:
|
|
266
270
|
case "end":
|
|
267
271
|
return _context2.stop();
|
|
268
272
|
}
|
|
269
|
-
}, _callee2, this, [[
|
|
273
|
+
}, _callee2, this, [[22, 34]]);
|
|
270
274
|
}));
|
|
271
275
|
function joinMeeting(_x) {
|
|
272
276
|
return _joinMeeting.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeetingRequest","attrs","options","meeting","otherAttrs","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","reachability","preferTranscoding","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","ipver","push","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","internal","installationId","length","geoHintInfo","countryCode","regionCode","localIp","CallDiagnosticUtils","anonymizeIPAddress","clientAddress","undefined","PARTICIPANT","clusterUrl","services","waitForCatalog","LOCI","CALL","invitee","address","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","localSdp","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","GET","reject","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","shareInstanceId","resourceToken","annotationInfo","annotation","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n IP_VERSION,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n reachability: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n ipVersion?: IP_VERSION;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n reachability,\n preferTranscoding,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n ipVersion,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const joinCookie = await this.getJoinCookie();\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n joinCookie,\n ipver: ipVersion,\n },\n };\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n // append installationId to device config if it exists\n // @ts-ignore\n if (this.webex.internal.device.config.installationId) {\n // @ts-ignore\n body.device.installationId = this.webex.internal.device.config.installationId;\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n body.device.localIp =\n // @ts-ignore\n CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||\n undefined;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage || reachability) {\n body.localMedias = [\n {\n localSdp: JSON.stringify({\n roapMessage,\n reachability,\n }),\n },\n ];\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @param {String} options.shareInstanceId id for current share\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n shareInstanceId: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.shareInstanceId) {\n body.floor.shareInstanceId = options.shareInstanceId;\n }\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MeetingRequest","attrs","options","meeting","otherAttrs","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","reachability","preferTranscoding","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","alias","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","ipver","push","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","internal","installationId","length","geoHintInfo","countryCode","regionCode","localIp","CallDiagnosticUtils","anonymizeIPAddress","clientAddress","undefined","PARTICIPANT","clusterUrl","services","waitForCatalog","LOCI","CALL","invitee","address","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","localSdp","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","GET","reject","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","shareInstanceId","resourceToken","annotationInfo","annotation","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n IP_VERSION,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @param {String} options.alias\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n reachability: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n ipVersion?: IP_VERSION;\n alias?: string;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n reachability,\n preferTranscoding,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n ipVersion,\n alias,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const joinCookie = await this.getJoinCookie();\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n joinCookie,\n ipver: ipVersion,\n },\n };\n\n if (alias) {\n body.alias = alias;\n }\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n // append installationId to device config if it exists\n // @ts-ignore\n if (this.webex.internal.device.config.installationId) {\n // @ts-ignore\n body.device.installationId = this.webex.internal.device.config.installationId;\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n body.device.localIp =\n // @ts-ignore\n CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||\n undefined;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage || reachability) {\n body.localMedias = [\n {\n localSdp: JSON.stringify({\n roapMessage,\n reachability,\n }),\n },\n ];\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @param {String} options.shareInstanceId id for current share\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n shareInstanceId: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.shareInstanceId) {\n body.floor.shareInstanceId = options.shareInstanceId;\n }\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -38,6 +38,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
38
38
|
* @param {String} options.locale,
|
|
39
39
|
* @param {Array} options.deviceCapabilities
|
|
40
40
|
* @param {boolean} options.liveAnnotationSupported
|
|
41
|
+
* @param {String} options.alias
|
|
41
42
|
* @returns {Promise}
|
|
42
43
|
*/
|
|
43
44
|
joinMeeting(options: {
|
|
@@ -63,6 +64,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
63
64
|
deviceCapabilities?: Array<string>;
|
|
64
65
|
liveAnnotationSupported: boolean;
|
|
65
66
|
ipVersion?: IP_VERSION;
|
|
67
|
+
alias?: string;
|
|
66
68
|
}): Promise<any>;
|
|
67
69
|
/**
|
|
68
70
|
* Send a request to refresh the captcha
|
package/dist/webinar/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
62
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
63
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
64
|
},
|
|
65
|
-
version: "3.0.0-beta.
|
|
65
|
+
version: "3.0.0-beta.402"
|
|
66
66
|
});
|
|
67
67
|
var _default = Webinar;
|
|
68
68
|
exports.default = _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.402",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@peculiar/webcrypto": "^1.4.3",
|
|
36
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
41
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
36
|
+
"@webex/plugin-meetings": "3.0.0-beta.402",
|
|
37
|
+
"@webex/test-helper-chai": "3.0.0-beta.402",
|
|
38
|
+
"@webex/test-helper-mocha": "3.0.0-beta.402",
|
|
39
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.402",
|
|
40
|
+
"@webex/test-helper-retry": "3.0.0-beta.402",
|
|
41
|
+
"@webex/test-helper-test-users": "3.0.0-beta.402",
|
|
42
42
|
"chai": "^4.3.4",
|
|
43
43
|
"chai-as-promised": "^7.1.1",
|
|
44
44
|
"jsdom-global": "3.0.2",
|
|
@@ -47,19 +47,19 @@
|
|
|
47
47
|
"typescript": "^4.7.4"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@webex/common": "3.0.0-beta.
|
|
50
|
+
"@webex/common": "3.0.0-beta.402",
|
|
51
51
|
"@webex/internal-media-core": "2.3.0",
|
|
52
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
58
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
59
|
-
"@webex/media-helpers": "3.0.0-beta.
|
|
60
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
61
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
62
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
52
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.402",
|
|
53
|
+
"@webex/internal-plugin-device": "3.0.0-beta.402",
|
|
54
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.402",
|
|
55
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.402",
|
|
56
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.402",
|
|
57
|
+
"@webex/internal-plugin-support": "3.0.0-beta.402",
|
|
58
|
+
"@webex/internal-plugin-user": "3.0.0-beta.402",
|
|
59
|
+
"@webex/media-helpers": "3.0.0-beta.402",
|
|
60
|
+
"@webex/plugin-people": "3.0.0-beta.402",
|
|
61
|
+
"@webex/plugin-rooms": "3.0.0-beta.402",
|
|
62
|
+
"@webex/webex-core": "3.0.0-beta.402",
|
|
63
63
|
"ampersand-collection": "^2.0.2",
|
|
64
64
|
"bowser": "^2.11.0",
|
|
65
65
|
"btoa": "^1.2.1",
|
package/src/meeting/request.ts
CHANGED
|
@@ -103,6 +103,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
103
103
|
* @param {String} options.locale,
|
|
104
104
|
* @param {Array} options.deviceCapabilities
|
|
105
105
|
* @param {boolean} options.liveAnnotationSupported
|
|
106
|
+
* @param {String} options.alias
|
|
106
107
|
* @returns {Promise}
|
|
107
108
|
*/
|
|
108
109
|
async joinMeeting(options: {
|
|
@@ -128,6 +129,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
128
129
|
deviceCapabilities?: Array<string>;
|
|
129
130
|
liveAnnotationSupported: boolean;
|
|
130
131
|
ipVersion?: IP_VERSION;
|
|
132
|
+
alias?: string;
|
|
131
133
|
}) {
|
|
132
134
|
const {
|
|
133
135
|
asResourceOccupant,
|
|
@@ -151,6 +153,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
151
153
|
deviceCapabilities = [],
|
|
152
154
|
liveAnnotationSupported,
|
|
153
155
|
ipVersion,
|
|
156
|
+
alias,
|
|
154
157
|
} = options;
|
|
155
158
|
|
|
156
159
|
LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
|
|
@@ -180,6 +183,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
180
183
|
},
|
|
181
184
|
};
|
|
182
185
|
|
|
186
|
+
if (alias) {
|
|
187
|
+
body.alias = alias;
|
|
188
|
+
}
|
|
189
|
+
|
|
183
190
|
if (breakoutsSupported) {
|
|
184
191
|
deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
|
|
185
192
|
}
|
|
@@ -214,7 +214,9 @@ describe('plugin-meetings', () => {
|
|
|
214
214
|
assert.equal(requestParams.body.permissionToken, 'permission-token');
|
|
215
215
|
assert.equal(requestParams.body.device.regionCode, 'WEST-COAST');
|
|
216
216
|
assert.include(requestParams.body.device.localIp, '127.0.0');
|
|
217
|
-
assert.deepEqual(requestParams.body.localMedias, [
|
|
217
|
+
assert.deepEqual(requestParams.body.localMedias, [
|
|
218
|
+
{localSdp: '{"roapMessage":"roap-message","reachability":"reachability"}'},
|
|
219
|
+
]);
|
|
218
220
|
|
|
219
221
|
assert.calledOnceWithExactly(anonymizeIpSpy, '127.0.0.1');
|
|
220
222
|
});
|
|
@@ -368,6 +370,22 @@ describe('plugin-meetings', () => {
|
|
|
368
370
|
assert.deepEqual(requestParams.body.locale, undefined);
|
|
369
371
|
});
|
|
370
372
|
|
|
373
|
+
it('adds alias to request when they are provided', async () => {
|
|
374
|
+
await meetingsRequest.joinMeeting({
|
|
375
|
+
alias: 'assigned name',
|
|
376
|
+
});
|
|
377
|
+
const requestParams = meetingsRequest.request.getCall(0).args[0];
|
|
378
|
+
|
|
379
|
+
assert.deepEqual(requestParams.body.alias, 'assigned name');
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
it('does not add alias to request when they are not provided', async () => {
|
|
383
|
+
await meetingsRequest.joinMeeting({});
|
|
384
|
+
const requestParams = meetingsRequest.request.getCall(0).args[0];
|
|
385
|
+
|
|
386
|
+
assert.deepEqual(requestParams.body.alias, undefined);
|
|
387
|
+
});
|
|
388
|
+
|
|
371
389
|
it('includes joinCookie and ipver correctly', async () => {
|
|
372
390
|
const locusUrl = 'locusURL';
|
|
373
391
|
const deviceUrl = 'deviceUrl';
|