DocumentationBlogSupport
Log inSign up
Log inSign up
BlogSupport
Build
Getting StartedPlatform Introduction
Embedded Apps
What's NewOverviewDeveloper GuideSidebar API Quick StartSubmission Checklist for Embedded Apps
Design Guidelines
MessagingMeetingsDevicesSidebarSidebar on Mobile
API Reference
BotsButtons and CardsIntegrationsBYODSService AppsService App GuestsService Apps G2GGuest IssuerWidgetsWebex ConnectLogin with WebexInstant ConnectInstant Connect Meeting LinksDeveloper SandboxBeta ProgramSubmit Your AppSupport PolicyFAQs
APIs
API Behavior ChangesPartners API GuideXML API DeprecationAccess the APIREST API BasicsCompliance
Webex APIs
Reference
Data Sources
Admin
OverviewAdmin APIsHybrid ServicesAuthentication
Guides
Hybrid ServicesWebhooksReal-time File DLP BasicsProvisioning APIsBackground ImagesAudit Events Error Reference
Reference
Admin Audit EventsAuthorizationsEventsGroupsHistorical AnalyticsHybrid ClustersHybrid ConnectorsLicensesMeeting QualitiesOrganization ContactsOrganizationsPartner ManagementPartner Reports/TemplatesPartner TagsPeopleRecording ReportRecordingsReport TemplatesReportsResource Group MembershipsResource GroupsRolesSecurity Audit EventsSession TypesSettingsSpace ClassificationsTracking CodesWorkspace LocationsWorkspace Metrics
Webex Calling Beta
Overview
Guides
Integrations and AuthorizationMetadata and Samples
Webex Calling
OverviewSDKs and ToolsWhat's New
Guides
Integrations and AuthorizationProvisioning APIsMetadata and SamplesBackground Images
Reference
Call ControlsCall RoutingCall Settings For MeCalling Service SettingsClient Call SettingsConference ControlsConverged RecordingsDECT Devices SettingsDevice Call SettingsDevicesEmergency Services SettingsFeatures: Announcement PlaylistFeatures: Announcement RepositoryFeatures: Auto AttendantFeatures: Call ParkFeatures: Call PickupFeatures: Call QueueFeatures: Call RecordingFeatures: Customer Experience EssentialsFeatures: Hunt GroupFeatures: Operating ModesFeatures: Paging GroupFeatures: Single Number ReachLocation Call SettingsLocation Call Settings: Call HandlingLocation Call Settings: SchedulesLocation Call Settings: VoicemailLocationsNumbersPSTNPartner Reports/TemplatesPeopleRecording ReportReportsReports: Detailed Call HistorySend Activation EmailUser Call SettingsVirtual Line Call SettingsWorkspace Call SettingsWorkspaces
Webex for Broadworks
Overview
Guides
Integrations and AuthorizationDeveloper's Guide
Reference
BroadWorks Billing ReportsBroadWorks EnterprisesBroadWorks SubscribersBroadWorks Workspaces
Webex for Wholesale
Overview
Guides
Developer's Guide
Reference
Wholesale Billing ReportsWholesale Provisioning
Webex for UCM
Guides
Integrations and Authorization
Reference
UCM Profile
Contact Center
Overview
Reference
Data Sources
Customer Journey Data
Overview
Guides
Getting StartedFAQ
Devices
Overview
Guides
Devices
Reference
Device Call SettingsDevice ConfigurationsDevicesWorkspace LocationsWorkspace MetricsWorkspace PersonalizationWorkspacesxAPI
Directory Services
Reference
Domain ManagementIdentity Organization
Meetings
Overview
Guides
Integrations and AuthorizationWebhooksWebinar GuideMeeting Resource Guide
Reference
Meeting ChatsMeeting Closed CaptionsMeeting InviteesMeeting MessagesMeeting ParticipantsMeeting PollsMeeting PreferencesMeeting Q and AMeeting QualitiesMeeting TranscriptsMeetingsMeetings Summary ReportPeopleRecording ReportRecordingsSession TypesTracking CodesVideo MeshWebhooks
Messaging
Overview
Guides
BotsIntegrations and AuthorizationWebhooksButtons and Cards
Reference
Attachment ActionsEventsMembershipsMessagesPeopleRoom TabsRoomsTeam MembershipsTeamsWebhooks
SCIM 2
Overview
Reference
SCIM 2 BulkSCIM 2 GroupsSCIM 2 Users
Workspace Integrations
OverviewTechnical DetailsControl Hub Features
Webex Status API
Full API Reference
Admin Audit EventsAttachment ActionsAuthorizationsBroadWorks Billing ReportsBroadWorks EnterprisesBroadWorks SubscribersBroadWorks WorkspacesCall ControlsCall RoutingCall Settings For MeCalling Service SettingsClient Call SettingsConference ControlsConverged RecordingsDECT Devices SettingsData SourcesDevice Call SettingsDevice ConfigurationsDevicesDomain ManagementEmergency Services SettingsEventsFeatures: Announcement PlaylistFeatures: Announcement RepositoryFeatures: Auto AttendantFeatures: Call ParkFeatures: Call PickupFeatures: Call QueueFeatures: Call RecordingFeatures: Customer Experience EssentialsFeatures: Hunt GroupFeatures: Operating ModesFeatures: Paging GroupFeatures: Single Number ReachGroupsGuests ManagementHistorical AnalyticsHybrid ClustersHybrid ConnectorsIdentity OrganizationIssuesLicensesLocation Call SettingsLocation Call Settings: Call HandlingLocation Call Settings: SchedulesLocation Call Settings: VoicemailLocationsMeeting ChatsMeeting Closed CaptionsMeeting InviteesMeeting MessagesMeeting ParticipantsMeeting PollsMeeting PreferencesMeeting Q and AMeeting QualitiesMeeting TranscriptsMeetingsMeetings Summary ReportMembershipsMessagesNumbersOrganization ContactsOrganizationsPSTNPartner ManagementPartner Reports/TemplatesPartner TagsPeopleRecording ReportRecordingsReport TemplatesReportsReports: Detailed Call HistoryResource Group MembershipsResource GroupsRolesRoom TabsRoomsSCIM 2 BulkSCIM 2 GroupsSCIM 2 UsersSecurity Audit EventsSend Activation EmailSession TypesSettingsSiteSpace ClassificationsTeam MembershipsTeamsTracking CodesUCM ProfileUser Call SettingsVideo MeshVirtual Line Call SettingsWebhooksWholesale Billing ReportsWholesale ProvisioningWorkspace Call SettingsWorkspace LocationsWorkspace MetricsWorkspace PersonalizationWorkspacesxAPI
API Changelog
SDKs
Space Meetings Migration
Calling
Introduction
Platform
Web
IntroductionQuickstart
Basics
AuthorizationCore ConceptsCalls
Advanced Features
Call SettingsContactsSupplementary ServicesVoicemailBackground Noise Reduction
Kitchen Sink
Meetings
Introduction
Platform
Web
IntroductionQuickstart
Basics
AuthorizationJoin a MeetingMigration To Improved MeetingsPasswords & CaptchasUnified Space Meetings
Advanced Features
Advanced ControlsDialing In and OutStreams & EffectsVideo Resolution
Multistream
Multistream Comprehensive GuideMultistream Quickstart
Migrating SDK V2 to V3
iOSAndroidBrowserNode.jsClick to Call
Developer CommunityCertifications

SDKs

Web Meetings SDK | Advanced Meeting Controls

This article describes the advanced meeting controls available in the Webex Web SDK for meetings.

anchorAvailable Controls

anchor

The following advanced meeting controls are available:

  • Screen recording
  • Lock and unlock meetings
  • Send DTMF tones
  • Transcription
  • Access PSTN phone audio
  • Effects for audio and video.

anchorScreen Recording

anchor

Once a meeting is created and joined, the screen recording controls can be initialized. Only the host of a meeting has the capability to record the screen and manage its controls. Scroll to the end of this page to learn how to determine the current user's role.

Start a Recording

To start a recording, use the Meeting object's startRecording() method:

await meeting.startRecording();

AsynchronousYes
ParametersNone
ReturnsPromise<undefined>
Pause a Recording

For a recording in process, pause the recording using the Meeting object's pauseRecording() method:

await meeting.pauseRecording();

AsynchronousYes
ParametersNone
ReturnsPromise<undefined>
Resume a Recording

To resume recording, use the Meeting object's resumeRecording() method:

await meeting.resumeRecording();

AsynchronousYes
ParametersNone
ReturnsPromise<undefined>
Stop a Recording

To stop recording, use the Meeting object's stopRecording() method:

await meeting.stopRecording();

AsynchronousYes
ParametersNone
ReturnsPromise<undefined>

anchorLock and Unlock Meetings

anchor

When you lock a meeting, no other participants can join unless you admit them. Only the host of a meeting can lock and unlock meetings.

Lock a Meeting

To lock a meeting, use the Meeting object's lockMeeting() method:

await meeting.lockMeeting();

AsynchronousYes
ParametersNone
ReturnsPromise<undefined>
Unlocking a meeting

To unlock a meeting, use the Meeting object's unlockMeeting() method:

await meeting.unlockMeeting();

AsynchronousYes
ParametersNone
ReturnsPromise

anchorSend DTMF Tones

anchor

To send DTMF tones in a meeting, use the Meeting object's sendDTMF() method and pass it a string representing the tone you want to send:

await meeting.sendDTMF(DTMFStringToBeSent);

AsynchronousYes
Parameters
Sl. NoParameter NameParameter TypeMandatoryDescription
1DTMFStringToBeSentStringYes

A string representing the DTMF tone to be sent. Allowed values are 0-9, * and #.

ReturnsPromise<undefined>

anchorTranscription

anchor

The basic steps for enabling and processing meeting transcriptions are:

  1. Initialize the Webex object with a enableAutomaticLLM meeting configuration.
  2. Enabled the Webex assistant when it is scheduled using the /meeting REST API here.
  3. Add users to the meeting.
Establish a Transcription Socket Connection

When a user initializes the Webex object with enableAutomaticLLM set to true, the Webex Meetings SDK will automatically establish a socket connection between the browser and the transcription backend:

webex.init({
    meetings: {
       enableAutomaticLLM: true
    }
});
Listen for the Transcription Connected Event

Listen for the meeting:transcription:connected event to determine if the socket connection has been successfully established:

meeting.on('meeting:transcription:connected', () => {
    console.log('Transcription Websocket is connected');
});

When the event is received, your app can enable transcription.

Enable Transcription

To start receiving transcriptions during a meeting use the Meeting object's startTranscription() method with an optional options parameter:

await meeting.startTranscription(options);

Parameter NameDescriptionRequiredSample valueType
optionsConfiguration object to be provided while starting transcription.No{ spokenLanguage?: String}Object

To specify a spoken language in the options, use the language codes conforming with ISO 639 language code specification.

Set Caption & Spoken Languages

When you start the transcription, you'll receive a meeting:receiveTranscription:started event with a payload containing a list of supported spoken and caption languages:

meeting.on('meeting:receiveTranscription:started', (payload) => {
      console.log(payload.captionLanguages);
      console.log(payload.spokenLanguages);
});

The captionLanguages and spokenLanguages arrays contain the language code for the supported languages. The language codes conform with the ISO 639 language code specification.

Start Receiving Transcription

To receive transcriptions, listen for the meeting:caption-received event which contains the captions generated from the meeting's audio:

meeting.on('meeting:caption-received', (payload) => {
      //use payload to display captions
});

Here's an example of the a transcription payload:

{
    "captions": [
        {
            "id": "88e1b0c9-7483-b865-f0bd-a685a5234943",
            "isFinal": true,
            "text": "Hey, everyone.",
            "currentSpokenLanguage": "en",
            "timestamp": "1:22",
            "speaker": {
                "speakerId": "8093d335-9b96-4f9d-a6b2-7293423be88a",
                "name": "Name"
            }
        },
        {
            "id": "e8fd9c60-1782-60c0-92e5-d5b22c80df2b",
            "isFinal": true,
            "text": "That's awesome.",
            "currentSpokenLanguage": "en",
            "timestamp": "1:26",
            "speaker": {
                "speakerId": "8093d335-9b96-4f9d-a6b2-7293423be88a",
                "name": "Name"
            }
        },
        {
            "id": "be398e11-cf08-92e7-a42d-077ecd60aeea",
            "isFinal": true,
            "text": "आपका नाम क्या है?",
            "currentSpokenLanguage": "hi",
            "timestamp": "1:55",
            "speaker": {
                "speakerId": "8093d335-9b96-4f9d-a6b2-7293423be88a",
                "name": "Name"
            }
        },
        {
            "id": "84adc1a7-b3c3-5a49-0588-aa787b1437eb",
            "isFinal": true,
            "translations": {
                "en": "What is your name?"
            },
            "text": "आपका नाम क्या है?",
            "currentSpokenLanguage": "hi",
            "timestamp": "2:11",
            "speaker": {
                "speakerId": "8093d335-9b96-4f9d-a6b2-7293423be88a",
                "name": "Name"
            }
        },
        {
            "id": "84c89387-cd5d-ce15-1867-562c0a91155f",
            "isFinal": true,
            "translations": {
                "hi": "तुम्हारा नाम क्या है?"
            },
            "text": "What's your name?",
            "currentSpokenLanguage": "en",
            "timestamp": "2:46",
            "speaker": {
                "speakerId": "8093d335-9b96-4f9d-a6b2-7293423be88a",
                "name": "Name"
            }
        }
    ],
    "interimCaptions": {
        "88e1b0c9-7483-b865-f0bd-a685a5234943": [],
        "e8fd9c60-1782-60c0-92e5-d5b22c80df2b": [],
        "be398e11-cf08-92e7-a42d-077ecd60aeea": [],
        "84adc1a7-b3c3-5a49-0588-aa787b1437eb": [],
        "84c89387-cd5d-ce15-1867-562c0a91155f": []
    }
}
Change the Spoken Language

During the meeting, if you'd like to change the spoken language, use the Meeting object's setSpokenLanguage() method:

const currentSpokenLanguage = await meeting.setSpokenLanguage(selectedLanguage);

Choose the selectedLanguage when you start the transcription. If you select the spoken language and speak in that language, the system displays the caption in the same language. If you set the caption language to a different language at any point, a user speaking in this new language will see the caption in that different language.

Change the Caption Language

During the meeting, use the Meeting object's setCaptionLanguage() method to set the caption language:

const currentCaptionLanguage = await meeting.setCaptionLanguage(selectedLanguage);

You'll choose the selectedLanguage language code at the start of the transcription. The system translates any speech, no matter the language, into this selected language.

Any participant can choose the caption language, but only the meeting host can set the spoken language. After setting a spoken language, the Webex cloud expects and assumes that all participants will communicate in that language.

Stop Receiving Transcription

To stop receiving the transcriptions, use the Meeting object's stopTranscription() method:

meeting.stopTranscription();

anchorUse PSTN Phone Audio

anchor

In a meeting, if the audio isn't clear or there are issues using device audio (desktop app, mobile app, or web app), Webex lets you dial in to a meeting via PSTN. The following controls are available:

  • Use Phone Audio
  • Disconnect Phone Audio

For more information see Use PSTN Phone Audio for Meetings

anchorEffects: Meeting Audio and Video

anchor

Webex meetings support the following three effects:

  • Background noise removal (BNR) for Webex audio.
  • Background blur for Webex video.
  • Virtual backgrounds for Webex video.

For more information, see Meeting Audio & Video Effects.

anchorDetermining the Current User's Role

anchor
The getCurUserType API

This document highlights that certain controls are reserved for the meeting host. To find out the current user's role, use the following method:

const userType = meeting.getCurUserType();

This method provides a string that specifies the user's role, which could be:

  • host
  • cohost
  • panelist
  • attendee
Event for Real-Time Role Updates

While the getCurUserType API provides the current user type, the SDK also emits an event to notify of any role changes in real-time:

meeting.on("meeting:self:rolesChanged", (payload) => {
  // Handle the role change
  // Example Payload: When an Attendee is made host
  // {
  //   "payload": {
  //       "oldRoles": [
  //           "ATTENDEE"
  //       ],
  //       "newRoles": [
  //           "MODERATOR",
  //           "ATTENDEE"
  //       ]
  //   }
  // }
});

The payload from this event contains the updated role information. The getCurUserType API will also return the correct role when called within the callback of this event.

In This Article
  • Available Controls
  • Screen Recording
  • Lock and Unlock Meetings
  • Send DTMF Tones
  • Transcription
  • Use PSTN Phone Audio
  • Effects: Meeting Audio and Video
  • Determining the Current User's Role

Connect

Support

Developer Community

Developer Events

Contact Sales

Handy Links

Webex Ambassadors

Webex App Hub

Resources

Open Source Bot Starter Kits

Download Webex

DevNet Learning Labs

Terms of Service

Privacy Policy

Cookie Policy

Trademarks

© 2025 Cisco and/or its affiliates. All rights reserved.