@webex/plugin-meetings 1.153.0 → 1.153.4

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.
@@ -102,12 +102,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
102
102
  key: "joinMeeting",
103
103
  value: function () {
104
104
  var _joinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) {
105
- var asResourceOccupant, sipUri, meetingNumber, deviceUrl, locusUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, preferTranscoding, url, body;
105
+ var asResourceOccupant, inviteeAddress, meetingNumber, permissionToken, deviceUrl, locusUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, preferTranscoding, url, body;
106
106
  return _regenerator.default.wrap(function _callee$(_context) {
107
107
  while (1) {
108
108
  switch (_context.prev = _context.next) {
109
109
  case 0:
110
- asResourceOccupant = options.asResourceOccupant, sipUri = options.sipUri, meetingNumber = options.meetingNumber, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, preferTranscoding = options.preferTranscoding;
110
+ asResourceOccupant = options.asResourceOccupant, inviteeAddress = options.inviteeAddress, meetingNumber = options.meetingNumber, permissionToken = options.permissionToken, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, preferTranscoding = options.preferTranscoding;
111
111
 
112
112
  _loggerProxy.default.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
113
113
 
@@ -139,50 +139,54 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
139
139
  body.moderator = moderator;
140
140
  }
141
141
 
142
+ if (permissionToken) {
143
+ body.permissionToken = permissionToken;
144
+ }
145
+
142
146
  if (pin !== undefined) {
143
147
  body.pin = pin;
144
148
  }
145
149
 
146
150
  if (!locusUrl) {
147
- _context.next = 11;
151
+ _context.next = 12;
148
152
  break;
149
153
  }
150
154
 
151
155
  url = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT);
152
- _context.next = 23;
156
+ _context.next = 24;
153
157
  break;
154
158
 
155
- case 11:
156
- if (!(sipUri || meetingNumber)) {
157
- _context.next = 23;
159
+ case 12:
160
+ if (!(inviteeAddress || meetingNumber)) {
161
+ _context.next = 24;
158
162
  break;
159
163
  }
160
164
 
161
- _context.prev = 12;
162
- _context.next = 15;
165
+ _context.prev = 13;
166
+ _context.next = 16;
163
167
  return this.webex.internal.services.waitForCatalog('postauth');
164
168
 
165
- case 15:
169
+ case 16:
166
170
  url = "".concat(this.webex.internal.services.get('locus'), "/").concat(_constants.LOCI, "/").concat(_constants.CALL);
167
171
  body.invitee = {
168
- address: sipUri || "wbxmn:".concat(meetingNumber)
172
+ address: inviteeAddress || "wbxmn:".concat(meetingNumber)
169
173
  };
170
- _context.next = 23;
174
+ _context.next = 24;
171
175
  break;
172
176
 
173
- case 19:
174
- _context.prev = 19;
175
- _context.t0 = _context["catch"](12);
177
+ case 20:
178
+ _context.prev = 20;
179
+ _context.t0 = _context["catch"](13);
176
180
 
177
- _loggerProxy.default.logger.error("Meeting:request#joinMeeting ".concat(sipUri ? 'sipUri' : 'meetingNumber', " --> ").concat(_context.t0));
181
+ _loggerProxy.default.logger.error("Meeting:request#joinMeeting Error Joining ".concat(inviteeAddress || meetingNumber, " --> ").concat(_context.t0));
178
182
 
179
183
  throw _context.t0;
180
184
 
181
- case 23:
185
+ case 24:
182
186
  // TODO: -- this will be resolved in SDK request
183
187
  url = url.concat("?".concat(_constants.ALTERNATE_REDIRECT_TRUE));
184
188
 
185
- if (resourceId === sipUri) {
189
+ if (resourceId === inviteeAddress) {
186
190
  body.callPreferences = {
187
191
  requestedMedia: [_constants._SLIDES_]
188
192
  };
@@ -198,12 +202,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
198
202
  body: body
199
203
  }));
200
204
 
201
- case 27:
205
+ case 28:
202
206
  case "end":
203
207
  return _context.stop();
204
208
  }
205
209
  }
206
- }, _callee, this, [[12, 19]]);
210
+ }, _callee, this, [[13, 20]]);
207
211
  }));
208
212
 
209
213
  function joinMeeting(_x) {
@@ -1 +1 @@
1
- {"version":3,"sources":["request.js"],"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","sipUri","meetingNumber","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","webex","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","get","LOCI","CALL","invitee","address","error","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","catch","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","record","recording","paused","PATCH","lock","locked","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","StatelessWebexPlugin"],"mappings":"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","sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n CALL,\n CONTROLS,\n DECLINE,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n SEND_DTMF_ENDPOINT,\n _SLIDES_\n} from '../constants';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n constructor(attrs, options) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {leading: true, trailing: true});\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 * @returns {Promise}\n */\n async joinMeeting(options) {\n const {\n asResourceOccupant,\n sipUri,\n meetingNumber,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding\n } = options;\n\n LoggerProxy.logger.info(\n 'Meeting:request#joinMeeting --> Joining a meeting',\n correlationId\n );\n\n let url = '';\n\n const body = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\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 }\n };\n\n if (this.webex.meetings.clientRegion) {\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n }\n else if (sipUri || meetingNumber) {\n try {\n await this.webex.internal.services.waitForCatalog('postauth');\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: sipUri || `wbxmn:${meetingNumber}`\n };\n }\n catch (e) {\n LoggerProxy.logger.error(`Meeting:request#joinMeeting ${sipUri ? 'sipUri' : 'meetingNumber'} --> ${e}`);\n throw (e);\n }\n }\n\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === sipUri) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_]\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\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 refreshCaptcha({\n captchaRefreshUrl,\n captchaId\n }) {\n const body = {\n captchaId\n };\n\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.localUrl 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 dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId\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 return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`);\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.localUrl 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 dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId\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 return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolen} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl.concat(syncUrl.split('?')[1] ? '&' : '?').concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`);\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolen} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#getFullLocus --> Error getting full locus, error ${err}`);\n\n return 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 disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId\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 return this.request({\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 * Make a network request 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 {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#leaveMeeting --> Leaving a meeting',\n correlationId\n );\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url\n },\n usingResource: resourceId || null,\n correlationId\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\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) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n correlationId: options.correlationId\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\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.id\n * @returns {Promise}\n */\n recordMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n record: {\n recording: options.recording,\n paused: options.paused\n }\n };\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body\n });\n }\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.request({\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) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n ...(options.reason && {reason: options.reason})\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\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.localMedias local sdps\n * @returns {Promise}\n */\n remoteAudioVideoToggle(options) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true\n }\n };\n\n return this.request({\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 * @returns {Promise}\n */\n changeMeetingFloor(options) {\n let floorReq = {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 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 = {\n floor: floorReq,\n resourceUrl: options.resourceUrl\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n\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}) {\n return this.request({\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 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 // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(main)}`));\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(content)}`));\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 = (renderInfoMain || renderInfoContent) ?\n {\n renderInfo:\n {\n main: renderInfoMain,\n content: renderInfoContent\n }\n } : undefined;\n\n return this.request({\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"]}
1
+ {"version":3,"sources":["request.js"],"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","webex","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","get","LOCI","CALL","invitee","address","error","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","catch","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","record","recording","paused","PATCH","lock","locked","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","StatelessWebexPlugin"],"mappings":"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","sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n CALL,\n CONTROLS,\n DECLINE,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n SEND_DTMF_ENDPOINT,\n _SLIDES_\n} from '../constants';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n constructor(attrs, options) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {leading: true, trailing: true});\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 * @returns {Promise}\n */\n async joinMeeting(options) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding\n } = options;\n\n LoggerProxy.logger.info(\n 'Meeting:request#joinMeeting --> Joining a meeting',\n correlationId\n );\n\n let url = '';\n\n const body = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\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 }\n };\n\n if (this.webex.meetings.clientRegion) {\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\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 }\n else if (inviteeAddress || meetingNumber) {\n try {\n await this.webex.internal.services.waitForCatalog('postauth');\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`\n };\n }\n catch (e) {\n LoggerProxy.logger.error(`Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`);\n throw (e);\n }\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) {\n body.localMedias = roapMessage.localMedias;\n }\n\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 refreshCaptcha({\n captchaRefreshUrl,\n captchaId\n }) {\n const body = {\n captchaId\n };\n\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.localUrl 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 dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId\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 return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`);\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.localUrl 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 dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId\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 return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolen} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl.concat(syncUrl.split('?')[1] ? '&' : '?').concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`);\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolen} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#getFullLocus --> Error getting full locus, error ${err}`);\n\n return 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 disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId\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 return this.request({\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 * Make a network request 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 {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#leaveMeeting --> Leaving a meeting',\n correlationId\n );\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url\n },\n usingResource: resourceId || null,\n correlationId\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\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) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n correlationId: options.correlationId\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\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.id\n * @returns {Promise}\n */\n recordMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n record: {\n recording: options.recording,\n paused: options.paused\n }\n };\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body\n });\n }\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.request({\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) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n ...(options.reason && {reason: options.reason})\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\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.localMedias local sdps\n * @returns {Promise}\n */\n remoteAudioVideoToggle(options) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true\n }\n };\n\n return this.request({\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 * @returns {Promise}\n */\n changeMeetingFloor(options) {\n let floorReq = {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 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 = {\n floor: floorReq,\n resourceUrl: options.resourceUrl\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n\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}) {\n return this.request({\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 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 // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(main)}`));\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(content)}`));\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 = (renderInfoMain || renderInfoContent) ?\n {\n renderInfo:\n {\n main: renderInfoMain,\n content: renderInfoContent\n }\n } : undefined;\n\n return this.request({\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"]}
@@ -39,18 +39,18 @@ var MeetingStateMachine = {
39
39
  transitions: [// when ringing a meeting, it must be first IDLE, because all other states are invalid, it transitions to the RINGING state
40
40
  {
41
41
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.RING,
42
- from: [_constants.MEETING_STATE_MACHINE.STATES.IDLE, _constants.MEETING_STATE_MACHINE.STATES.SAFE, _constants.MEETING_STATE_MACHINE.STATES.JOINED],
42
+ from: [_constants.MEETING_STATE_MACHINE.STATES.IDLE, _constants.MEETING_STATE_MACHINE.STATES.ERROR, _constants.MEETING_STATE_MACHINE.STATES.JOINED],
43
43
  to: _constants.MEETING_STATE_MACHINE.STATES.RINGING
44
44
  }, // when joining a meeting, it must be from the RINGING or IDLE state, transitions to JOINED state, 1:1 will go to RINGING,
45
45
  // others will go straight to JOINED with this transition
46
46
  {
47
47
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.JOIN,
48
- from: [_constants.MEETING_STATE_MACHINE.STATES.JOINED, _constants.MEETING_STATE_MACHINE.STATES.IDLE, _constants.MEETING_STATE_MACHINE.STATES.RINGING, _constants.MEETING_STATE_MACHINE.STATES.SAFE],
48
+ from: [_constants.MEETING_STATE_MACHINE.STATES.JOINED, _constants.MEETING_STATE_MACHINE.STATES.IDLE, _constants.MEETING_STATE_MACHINE.STATES.RINGING, _constants.MEETING_STATE_MACHINE.STATES.ERROR],
49
49
  to: _constants.MEETING_STATE_MACHINE.STATES.JOINED
50
50
  }, // signify that ringing has stopped and somebody else answered, move state to DECLINED, ANSWERED
51
51
  {
52
52
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.REMOTE,
53
- from: [_constants.MEETING_STATE_MACHINE.STATES.JOINED, _constants.MEETING_STATE_MACHINE.STATES.SAFE],
53
+ from: [_constants.MEETING_STATE_MACHINE.STATES.JOINED, _constants.MEETING_STATE_MACHINE.STATES.ERROR],
54
54
 
55
55
  /**
56
56
  * @param {Object} remote
@@ -75,22 +75,18 @@ var MeetingStateMachine = {
75
75
  }, // when leaving a meeting it must be from either the RINGING, JOINED, or ERROR states, and transitions it to the ENDED state
76
76
  {
77
77
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.LEAVE,
78
- from: [_constants.MEETING_STATE_MACHINE.STATES.IDLE, _constants.MEETING_STATE_MACHINE.STATES.RINGING, _constants.MEETING_STATE_MACHINE.STATES.JOINED, _constants.MEETING_STATE_MACHINE.STATES.ANSWERED, _constants.MEETING_STATE_MACHINE.STATES.DECLINED, _constants.MEETING_STATE_MACHINE.STATES.ERROR, _constants.MEETING_STATE_MACHINE.STATES.SAFE],
78
+ from: [_constants.MEETING_STATE_MACHINE.STATES.IDLE, _constants.MEETING_STATE_MACHINE.STATES.RINGING, _constants.MEETING_STATE_MACHINE.STATES.JOINED, _constants.MEETING_STATE_MACHINE.STATES.ANSWERED, _constants.MEETING_STATE_MACHINE.STATES.DECLINED, _constants.MEETING_STATE_MACHINE.STATES.ERROR],
79
79
  to: _constants.MEETING_STATE_MACHINE.STATES.ENDED
80
80
  }, // when declining an incoming meeting it must be from the ringing state, and it moves to DECLINED state
81
81
  {
82
82
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.DECLINE,
83
- from: [_constants.MEETING_STATE_MACHINE.STATES.RINGING, _constants.MEETING_STATE_MACHINE.STATES.SAFE],
83
+ from: [_constants.MEETING_STATE_MACHINE.STATES.RINGING, _constants.MEETING_STATE_MACHINE.STATES.ERROR],
84
84
  to: _constants.MEETING_STATE_MACHINE.STATES.ENDED
85
85
  }, // transition from ANY state to ERROR state
86
86
  {
87
87
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.FAIL,
88
88
  from: '*',
89
89
  to: _constants.MEETING_STATE_MACHINE.STATES.ERROR
90
- }, {
91
- name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.SAFE,
92
- from: _constants.MEETING_STATE_MACHINE.STATES.ERROR,
93
- to: _constants.MEETING_STATE_MACHINE.STATES.SAFE
94
90
  }, // fail safe, transition from ANY state to IDLE state
95
91
  {
96
92
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.RESET,
@@ -141,16 +137,13 @@ var MeetingStateMachine = {
141
137
  },
142
138
 
143
139
  /**
144
- * handle the error transition stage
140
+ * handle the entry to error state
145
141
  * @param {Object} transition
146
142
  * @param {Error} error
147
143
  * @returns {Boolean}
148
144
  */
149
- onBeforeError: function onBeforeError(transition, error) {
150
- _loggerProxy.default.logger.error("Meeting:state#onBeforeError --> state->onError#meeting.id: ".concat(this.meeting.id, " | Transition '").concat(transition.transition, "' : ").concat(transition.from, " -> ").concat(transition.to, " failed after last state transition, with error ").concat(error, ". Moving to a non-informative state. Last states: ").concat(this.history));
151
- },
152
- onAfterError: function onAfterError() {
153
- this.safe();
145
+ onEnterError: function onEnterError(transition, error) {
146
+ _loggerProxy.default.logger.error("Meeting:state#onEnterError --> state->onEnterError#meeting.id: ".concat(this.meeting.id, " | Transition '").concat(transition === null || transition === void 0 ? void 0 : transition.transition, "' : ").concat(transition === null || transition === void 0 ? void 0 : transition.from, " -> ").concat(transition === null || transition === void 0 ? void 0 : transition.to, ", with error ").concat(error, ". Last states: ").concat(this.history));
154
147
  },
155
148
 
156
149
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["state.js"],"names":["MeetingStateMachine","create","meetingRef","ParameterError","StateMachine","init","MEETING_STATE_MACHINE","STATES","IDLE","transitions","name","TRANSITIONS","RING","from","SAFE","JOINED","to","RINGING","JOIN","REMOTE","remote","remoteAnswered","ANSWERED","remoteDeclined","DECLINED","ERROR","LEAVE","ENDED","DECLINE","FAIL","RESET","data","meeting","methods","onRemote","transition","stop","Trigger","trigger","file","function","EVENT_TRIGGERS","MEETING_RINGING_STOP","id","type","onRing","MEETING_RINGING","onBeforeError","error","LoggerProxy","logger","history","onAfterError","safe","onAfterTransition","log","plugins","StateMachineHistory","max"],"mappings":"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","sourcesContent":["import StateMachine from 'javascript-state-machine';\nimport StateMachineHistory from 'javascript-state-machine/lib/history';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport {MEETING_STATE_MACHINE, EVENT_TRIGGERS} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\n// TODO: ensure that meeting can be destroyed when in an error state\nconst MeetingStateMachine = {\n /**\n * Initializes the StateMachine for the meeting\n * @param {Meeting} meetingRef A reference to a meeting instance\n * @returns {StateMachine}\n */\n create(meetingRef) {\n if (!meetingRef) {\n throw new ParameterError('You must initialize the meeting state machine with a meeting reference.');\n }\n\n return new StateMachine({\n init: MEETING_STATE_MACHINE.STATES.IDLE,\n transitions: [\n // when ringing a meeting, it must be first IDLE, because all other states are invalid, it transitions to the RINGING state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.RING,\n from: [MEETING_STATE_MACHINE.STATES.IDLE, MEETING_STATE_MACHINE.STATES.SAFE, MEETING_STATE_MACHINE.STATES.JOINED],\n to: MEETING_STATE_MACHINE.STATES.RINGING\n },\n // when joining a meeting, it must be from the RINGING or IDLE state, transitions to JOINED state, 1:1 will go to RINGING,\n // others will go straight to JOINED with this transition\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.JOIN,\n from: [MEETING_STATE_MACHINE.STATES.JOINED, MEETING_STATE_MACHINE.STATES.IDLE, MEETING_STATE_MACHINE.STATES.RINGING, MEETING_STATE_MACHINE.STATES.SAFE],\n to: MEETING_STATE_MACHINE.STATES.JOINED\n },\n // signify that ringing has stopped and somebody else answered, move state to DECLINED, ANSWERED\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.REMOTE,\n from: [MEETING_STATE_MACHINE.STATES.JOINED, MEETING_STATE_MACHINE.STATES.SAFE],\n /**\n * @param {Object} remote\n * @param {Boolean} remote.remoteAnswered\n * @param {Boolean} remote.remoteDeclined\n * @returns {String}\n */\n to(remote) {\n // other user answered the call\n if (remote.remoteAnswered) {\n return MEETING_STATE_MACHINE.STATES.ANSWERED;\n }\n // other user declined the call\n if (remote.remoteDeclined) {\n return MEETING_STATE_MACHINE.STATES.DECLINED;\n }\n\n // default\n return MEETING_STATE_MACHINE.STATES.ERROR;\n }\n },\n // when leaving a meeting it must be from either the RINGING, JOINED, or ERROR states, and transitions it to the ENDED state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.LEAVE,\n from: [\n MEETING_STATE_MACHINE.STATES.IDLE,\n MEETING_STATE_MACHINE.STATES.RINGING,\n MEETING_STATE_MACHINE.STATES.JOINED,\n MEETING_STATE_MACHINE.STATES.ANSWERED,\n MEETING_STATE_MACHINE.STATES.DECLINED,\n MEETING_STATE_MACHINE.STATES.ERROR,\n MEETING_STATE_MACHINE.STATES.SAFE\n ],\n to: MEETING_STATE_MACHINE.STATES.ENDED\n },\n // when declining an incoming meeting it must be from the ringing state, and it moves to DECLINED state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.DECLINE,\n from: [MEETING_STATE_MACHINE.STATES.RINGING, MEETING_STATE_MACHINE.STATES.SAFE],\n to: MEETING_STATE_MACHINE.STATES.ENDED\n },\n // transition from ANY state to ERROR state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.FAIL,\n from: '*',\n to: MEETING_STATE_MACHINE.STATES.ERROR\n },\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.SAFE,\n from: MEETING_STATE_MACHINE.STATES.ERROR,\n to: MEETING_STATE_MACHINE.STATES.SAFE\n },\n // fail safe, transition from ANY state to IDLE state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.RESET,\n from: '*',\n to: MEETING_STATE_MACHINE.STATES.IDLE\n }\n ],\n data: {\n /**\n * The meeting instance to execute all state changes on\n */\n meeting: meetingRef\n },\n methods: {\n /**\n * Ring stop transition, to end the ring event for the meeting, and transition the state to ANSWERED OR DECLINED, only for outgoing meetings\n * @param {Object} transition -- FiniteStateMachine automatically passed, not used\n * @param {Object} stop -- {remoteAnswered: {Boolean}, remoteDeclined: {Boolean}}\n * @returns {Boolean}\n */\n onRemote(transition, stop) {\n if (this.meeting) {\n Trigger.trigger(\n this.meeting,\n {\n file: 'meeting/state',\n function: 'onRemote'\n },\n EVENT_TRIGGERS.MEETING_RINGING_STOP,\n {\n id: this.meeting.id,\n type: stop\n }\n );\n }\n },\n /**\n * Ring transition, to cause the ring event for the meeting, and transition the state to RINGING, for both incoming, and outgoing meetings\n * @param {Object} transition -- FiniteStateMachine automatically passed, not used\n * @param {String} type -- incoming call === INCOMING / or other meetings have a ring type of JOIN\n * @returns {Boolean}\n */\n onRing(transition, type) {\n if (this.meeting) {\n Trigger.trigger(\n this.meeting,\n {\n file: 'meeting/state',\n function: 'onRing'\n },\n EVENT_TRIGGERS.MEETING_RINGING,\n {\n type,\n id: this.meeting.id\n }\n );\n }\n },\n /**\n * handle the error transition stage\n * @param {Object} transition\n * @param {Error} error\n * @returns {Boolean}\n */\n onBeforeError(transition, error) {\n LoggerProxy.logger.error(`Meeting:state#onBeforeError --> state->onError#meeting.id: ${this.meeting.id} | Transition '${transition.transition}' : ${transition.from} -> ${transition.to} failed after last state transition, with error ${error}. Moving to a non-informative state. Last states: ${this.history}`);\n },\n onAfterError() {\n this.safe();\n },\n /**\n * After ANY transition occurs, we want to know what state the meeting moved to for debugging\n * @param {Object} transition\n * @returns {Boolean}\n */\n onAfterTransition(transition) {\n LoggerProxy.logger.log(`Meeting:state#onAfterTransition --> state->onAfterTransition#meeting.id: ${this.meeting.id} | Transition '${transition.transition}' : ${transition.from} -> ${transition.to} executed. Last states: ${this.history}`);\n }\n },\n // track the last 25 states entered\n plugins: [new StateMachineHistory({max: 25})]\n });\n }\n};\n\nexport default MeetingStateMachine;\n"]}
1
+ {"version":3,"sources":["state.js"],"names":["MeetingStateMachine","create","meetingRef","ParameterError","StateMachine","init","MEETING_STATE_MACHINE","STATES","IDLE","transitions","name","TRANSITIONS","RING","from","ERROR","JOINED","to","RINGING","JOIN","REMOTE","remote","remoteAnswered","ANSWERED","remoteDeclined","DECLINED","LEAVE","ENDED","DECLINE","FAIL","RESET","data","meeting","methods","onRemote","transition","stop","Trigger","trigger","file","function","EVENT_TRIGGERS","MEETING_RINGING_STOP","id","type","onRing","MEETING_RINGING","onEnterError","error","LoggerProxy","logger","history","onAfterTransition","log","plugins","StateMachineHistory","max"],"mappings":"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","sourcesContent":["import StateMachine from 'javascript-state-machine';\nimport StateMachineHistory from 'javascript-state-machine/lib/history';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport {MEETING_STATE_MACHINE, EVENT_TRIGGERS} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\n// TODO: ensure that meeting can be destroyed when in an error state\nconst MeetingStateMachine = {\n /**\n * Initializes the StateMachine for the meeting\n * @param {Meeting} meetingRef A reference to a meeting instance\n * @returns {StateMachine}\n */\n create(meetingRef) {\n if (!meetingRef) {\n throw new ParameterError('You must initialize the meeting state machine with a meeting reference.');\n }\n\n return new StateMachine({\n init: MEETING_STATE_MACHINE.STATES.IDLE,\n transitions: [\n // when ringing a meeting, it must be first IDLE, because all other states are invalid, it transitions to the RINGING state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.RING,\n from: [MEETING_STATE_MACHINE.STATES.IDLE, MEETING_STATE_MACHINE.STATES.ERROR, MEETING_STATE_MACHINE.STATES.JOINED],\n to: MEETING_STATE_MACHINE.STATES.RINGING\n },\n // when joining a meeting, it must be from the RINGING or IDLE state, transitions to JOINED state, 1:1 will go to RINGING,\n // others will go straight to JOINED with this transition\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.JOIN,\n from: [MEETING_STATE_MACHINE.STATES.JOINED, MEETING_STATE_MACHINE.STATES.IDLE, MEETING_STATE_MACHINE.STATES.RINGING, MEETING_STATE_MACHINE.STATES.ERROR],\n to: MEETING_STATE_MACHINE.STATES.JOINED\n },\n // signify that ringing has stopped and somebody else answered, move state to DECLINED, ANSWERED\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.REMOTE,\n from: [MEETING_STATE_MACHINE.STATES.JOINED, MEETING_STATE_MACHINE.STATES.ERROR],\n /**\n * @param {Object} remote\n * @param {Boolean} remote.remoteAnswered\n * @param {Boolean} remote.remoteDeclined\n * @returns {String}\n */\n to(remote) {\n // other user answered the call\n if (remote.remoteAnswered) {\n return MEETING_STATE_MACHINE.STATES.ANSWERED;\n }\n // other user declined the call\n if (remote.remoteDeclined) {\n return MEETING_STATE_MACHINE.STATES.DECLINED;\n }\n\n // default\n return MEETING_STATE_MACHINE.STATES.ERROR;\n }\n },\n // when leaving a meeting it must be from either the RINGING, JOINED, or ERROR states, and transitions it to the ENDED state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.LEAVE,\n from: [\n MEETING_STATE_MACHINE.STATES.IDLE,\n MEETING_STATE_MACHINE.STATES.RINGING,\n MEETING_STATE_MACHINE.STATES.JOINED,\n MEETING_STATE_MACHINE.STATES.ANSWERED,\n MEETING_STATE_MACHINE.STATES.DECLINED,\n MEETING_STATE_MACHINE.STATES.ERROR\n ],\n to: MEETING_STATE_MACHINE.STATES.ENDED\n },\n // when declining an incoming meeting it must be from the ringing state, and it moves to DECLINED state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.DECLINE,\n from: [MEETING_STATE_MACHINE.STATES.RINGING, MEETING_STATE_MACHINE.STATES.ERROR],\n to: MEETING_STATE_MACHINE.STATES.ENDED\n },\n // transition from ANY state to ERROR state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.FAIL,\n from: '*',\n to: MEETING_STATE_MACHINE.STATES.ERROR\n },\n // fail safe, transition from ANY state to IDLE state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.RESET,\n from: '*',\n to: MEETING_STATE_MACHINE.STATES.IDLE\n }\n ],\n data: {\n /**\n * The meeting instance to execute all state changes on\n */\n meeting: meetingRef\n },\n methods: {\n /**\n * Ring stop transition, to end the ring event for the meeting, and transition the state to ANSWERED OR DECLINED, only for outgoing meetings\n * @param {Object} transition -- FiniteStateMachine automatically passed, not used\n * @param {Object} stop -- {remoteAnswered: {Boolean}, remoteDeclined: {Boolean}}\n * @returns {Boolean}\n */\n onRemote(transition, stop) {\n if (this.meeting) {\n Trigger.trigger(\n this.meeting,\n {\n file: 'meeting/state',\n function: 'onRemote'\n },\n EVENT_TRIGGERS.MEETING_RINGING_STOP,\n {\n id: this.meeting.id,\n type: stop\n }\n );\n }\n },\n /**\n * Ring transition, to cause the ring event for the meeting, and transition the state to RINGING, for both incoming, and outgoing meetings\n * @param {Object} transition -- FiniteStateMachine automatically passed, not used\n * @param {String} type -- incoming call === INCOMING / or other meetings have a ring type of JOIN\n * @returns {Boolean}\n */\n onRing(transition, type) {\n if (this.meeting) {\n Trigger.trigger(\n this.meeting,\n {\n file: 'meeting/state',\n function: 'onRing'\n },\n EVENT_TRIGGERS.MEETING_RINGING,\n {\n type,\n id: this.meeting.id\n }\n );\n }\n },\n /**\n * handle the entry to error state\n * @param {Object} transition\n * @param {Error} error\n * @returns {Boolean}\n */\n onEnterError(transition, error) {\n LoggerProxy.logger.error(`Meeting:state#onEnterError --> state->onEnterError#meeting.id: ${this.meeting.id} | Transition '${transition?.transition}' : ${transition?.from} -> ${transition?.to}, with error ${error}. Last states: ${this.history}`);\n },\n /**\n * After ANY transition occurs, we want to know what state the meeting moved to for debugging\n * @param {Object} transition\n * @returns {Boolean}\n */\n onAfterTransition(transition) {\n LoggerProxy.logger.log(`Meeting:state#onAfterTransition --> state->onAfterTransition#meeting.id: ${this.meeting.id} | Transition '${transition.transition}' : ${transition.from} -> ${transition.to} executed. Last states: ${this.history}`);\n }\n },\n // track the last 25 states entered\n plugins: [new StateMachineHistory({max: 25})]\n });\n }\n};\n\nexport default MeetingStateMachine;\n"]}
@@ -143,12 +143,13 @@ MeetingUtil.joinMeeting = function (meeting, options) {
143
143
 
144
144
 
145
145
  return meeting.meetingRequest.joinMeeting({
146
- sipUri: meeting.sipUri,
146
+ inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,
147
147
  meetingNumber: meeting.meetingNumber,
148
148
  deviceUrl: meeting.deviceUrl,
149
149
  locusUrl: meeting.locusUrl,
150
150
  correlationId: meeting.correlationId,
151
151
  roapMessage: options.roapMessage,
152
+ permissionToken: meeting.permissionToken,
152
153
  resourceId: options.resourceId || null,
153
154
  moderator: options.moderator,
154
155
  pin: options.pin,