Skip to content

Migration to Unified Space Meetings

Sreekanth Narayanan edited this page Jan 30, 2024 · 9 revisions

Introduction

This guide provides an overview of the USM (also known as Unified Space Meetings) and outlines the impacted areas, along with the necessary adjustments in these areas for the adoption of the USM. The goal of these improved meetings in a space is to provide a unified experience which is a superset of Webex Meetings and Space Meetings. The meeting experience would be the same regardless of how the meeting is joined or where it is scheduled.

Pre-Migration Checklist

Please ensure the SDK version is webex-js-sdk@2.60.0 or above.

What is USM (Unified Space Meeting)?

USM is the combined experience of Webex Meetings (Scheduled Webex Meetings, PMR) and Space Meetings (Scheduled Space Meetings, Instant Space Meetings).

Thus, it offers the following features:

  • Allows to schedule a meeting where all the members of the space will have the meeting information and the same meeting could be sent to other invitees as well.
  • A meeting could be instantly started in a space without pre-scheduling it.

Please read through this comprehensive guide to learn more about USM.

Migrating from Spark/Space meeting to USM

Earlier in the case of spark/space meeting, not every user was required to have a license to create a meeting, instead when a user without the license would create a meeting the meeting would be created on behalf of the licensed user who created the space.

For USM meetings every user needs to have a license to create a meeting. In the case of guest users, a Service App (Machine account) will create the meeting for guests to join.

Therefore, the initial stage of transitioning from space to USM involves the management of user licenses:

  • Create a Webex site and re-distribute the licenses among users.
  • Create a Service App for end-to-end provisioning of users and other features.
  • As part of USM, creating a guest user through Guest Issuer is being deprecated. Now the way to create a guest user would be through a Service App tied to a guest site.

Users with a Webex account can acquire their access token from the developer portal by logging in with their authentication details (username/password).

For guest users, the access token can be obtained via the Service App.

Migration Steps

SDK Changes

Please adhere to the guidelines below to transition from utilizing roomId/spaceId to meetingId/sipUrl within the SDK.

Code changes required

The support for direct use of roomId/spaceId is being deprecated in webex-js-sdk and Meeting Widgets to create or join a meeting in favor of utilizing Meetings APIs to start an ad-hoc meeting. The Meetings APIs provide additional flexibility to developers. Once the meeting has been created using a licensed user/service-app, the Webex JS SDK can be utilized to join the meeting.

Before

The following code demonstrates how to create a Webex meeting using a specified room ID or space ID:

webex.meetings.create('room-id-or-space-id').then((meeting) => {
  console.log(meeting);
});

After

Step-1

Create a meeting by calling the API https://webexapis.com/v1/meetings and obtain a meetingId or sipUrl.

Step-2

  • Check if USM is enabled - webex.meetings.config.experimental.enableUnifiedMeetings
  • Toggle to USM by calling webex.meetings._toggleUnifiedMeetings() if not already enabled

Step-3

The code snippet below illustrates the process of creating a Webex meeting using either a meeting ID or a SIP URL:

webex.meetings.create('meeting-id or sipUrl').then((meeting) => {
  console.log(meeting);
});

If a roomId/spaceId is specified as the meeting destination, the SDK will generate an error with the subsequent code and message:

Error Code - 30105

Error Message - 'Using the space ID as a destination is no longer supported. Please refer to the migration guide to migrate to use the meeting ID or SIP address.'

Note: Using personId to create a meeting is still supported. Please use the type as 'PERSON_ID'.

Join Meeting by Entering Password/Captcha

If the user is not part of the space where the meeting is created then the user will be prompted for the password. On entering an incorrect password a few times, captcha information is provided along with the appropriate error code.

meetingverifypassword

Implementing Password and Captcha flows

Refresh captcha

A new API is added for refreshing the meeting captcha code if present.

Meeting refresh captcha As a result, the meeting will have a new captcha ID, image and audio. If the refresh operation fails, the meeting remains with the old captcha properties.

Make another participant host

A participant can be made a host using the below API. Only a host can make another participant host.

Invite another participant

A participant can be invited to the meeting using the below API. Only a host can invite another participant. Participants can be invited using an email address.

Meeting invite

Meeting Widgets changes

Please adhere to the guidelines below to transition from utilizing roomId/spaceId to meetingId/sipUrl within the Meetings Widget.

Before

The following code demonstrates how to create a Webex meeting using a specified room ID or space ID:

import { WebexMeetingsWidget } from '@webex/widgets';

import '@webex/widgets/dist/css/webex-widgets.css';

export default function App() {
  return (
    <WebexMeetingsWidget
      style={{ width: '1000px', height: '500px' }} // Substitute with any arbitrary size or use `className`
      accessToken='<ACCESS_TOKEN>'
      meetingDestination='<ROOM_ID>' // NOTICE THIS LINE
    />
  );
}

After

Step-1

Use step-1 from SDK Changes to obtain meetingId or sipUrl.

Step-2

The code snippet below illustrates the process of creating a Webex meeting using either a meeting ID or a SIP URL:

import { WebexMeetingsWidget } from '@webex/widgets';

import '@webex/widgets/dist/css/webex-widgets.css';

export default function App() {
  return (
    <WebexMeetingsWidget
      style={{ width: '1000px', height: '500px' }} // Substitute with any arbitrary size or use `className`
      accessToken='<ACCESS_TOKEN>'
      meetingDestination='<MEETING_ID OR SIP_URL>' // NOTICE THIS LINE
    />
  );
}

Note: If spaceId is passed for meetingDestination the widget will throw an error.

Space/Recent Widgets Changes

In this context, you lack the ability to choose the ID for creating or joining a meeting, so we won't be addressing the deprecation of the roomId.

Given that USM mandates a license for each user to participate in meetings, the meet button will be rendered inactive for users without a valid license.

Please read through step 1 from SDK Changes to distribute licenses among users.

Troubleshooting

Known Issues

  • JoinLink for guest users asks for meeting credentials to allow joining. This is a feature gap between converged and non-converged sites. It will be fixed in Jan '24

Limitations

  • Limitation of consumer org user. In the new space, new Gmail users can initiate scheduled or instant meetings, while in the old space, neither new nor old Gmail users can start scheduled or instant meetings.

  • Limitation in the Webex App, individuals not listed as invitees will be placed in the lobby and require admission (admit).

Conclusion

This wiki summarizes the migration process and highlights actions or considerations.

Clone this wiki locally