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 Calling SDK | Supplementary Services

This article describes the Webex Calling SDK supplementary services such as hold, resume, blind transfer, and consult transfer.

Once an inbound or outbound call is in an established state, you can access a set of supplementary services. To access these services, you'll need the Call object, which is created when a call is initialized. Refer to Inbound/Outbound Calls for information on creating a Call object.

The Call object exposes the following supplementary service methods:

  • doHoldResume()
  • completeTransfer()
  • sendDigit()

anchordoHoldResume Method

anchor

The doHoldResume() method puts the call on hold or resumes based on the current state of the call. If the call is connected, it's put on hold. Likewise if the call is already on hold, doHoldResume() resumes the call.

Parameters--
Returnsvoid
// Assuming the call(inbound/outbound) is already established and we have the call instance.

call.doHoldResume(); // call is put on hold

call.doHoldResume(); // call is resumed

You'll want to create a listener for the held event on the Call object to monitor the hold status of the call:

call.on('held', (callId: CallId) => {
  // Add code to handle successful hold
});

If the hold action is not successful, the Call object emits a hold_error event:

call.on('hold_error', (error: CallError) => {
  // Add code to handle hold error
});

If a call is resumed from hold successfully, the Call object emits a resumed event:

call.on('resumed', (callId: CallId) => {
  // Add code to handle successful resume
});

if the call is not resumed successfully, the Call object emits a resume_error:

call.on('resume_error', (error: CallError) => {
  // Add code to handle resume error
});

anchorcompleteTransfer Method

anchor

The completeTransfer() method initiate call transfers. The Calling SDK supports two types of transfers: blind transfer and a consult transfer.

The method accepts three arguments:

  • transferType
  • transferCallID
  • transferTarget

The following table provides more details:

Parameters
NameDescriptionValuesRequired
transferType Controls which type of transfer is triggered.

enum TransferType

BLINDCONSULT
Yes
transferCallId Call ID where the current call will be merged for consult transfers. string No
transferTargetDestination for blind transfer.stringNo
Returnsvoid

Blind Transfer

A blind transfer involves transferring a call to a destination without first consulting with the person to whom the call is being transferred. To initiate a blind transfer, set the transferType to BLIND and provide the transferTarget. For a blind transfer, transferTarget is mandatory. A transferCallId is not required for a blind transfer.

const call = line.makeCall();
const destination = '123456789';
// Note: transferCallId is used for consult transfer, and must be undefined for a blind transfer.
call.completeTransfer(TransferType.BLIND, undefined, destination); 
Consult Transfer

A consult transfer involves consulting with a new user before transferring the call to them. To initiate a consult transfer, set the transferType to CONSULT and provide the transferCallId. For a consult transfer, transferCallId is a mandatory argument. transferTarget is not required for a consult transfer.

Here's the workflow for a typical consult transfer:

  1. UserA calls UserB. At this point, either of the users can transfer the call.
  2. UserB wants to transfer the call. UserB will first have to put UserA on hold.
  3. Now UserB will be able to dial out to UserC.
  4. Once UserC answers, UserB and UserC will be in a connected call while UserA is on hold.
  5. The completeTransfer() method can be invoked to allow UserB to transfer the call.
  6. The CallId between UserA and UserB is the transferCallId and is passed to the method.
  7. If the transfer is successful, UserA and UserC will be on a call and UserB will get disconnected from both the calls.
// callAB -> call between UserA and UserB
// callBC -> call between UserB and UserC

// UserA calls UserB
const callAB = line.makeCall();

// UserB puts UserA on hold
callAB.doHoldResume();

// UserB calls UserC
const callBC = line.makeCall();

// UserB completes the transfer
callAB.completeTransfer(TransferType.CONSULT, CallBC.getCallId());

If transfer is not successful, the CAll object emits a 'transfer_error' event.

call.on('transfer_error', (error: CallError) => {
  // Add code to handle transfer error
});

The CallError object contains the following members:

PropertiesDescriptionType
messageDescription of error in the callingClientErrorMessage
contextError Context as generated by the caller.ErrorContext
typeType of error in the callingClientERROR_TYPE
correlationIdCorrelation ID of the call that faced the issue.string
errorLayerLayer at which error occurred, either media or call_control.ERROR_LAYER

anchorsendDigit Method

anchor

The sendDigit() method sends a single DTMF digit on an established call which is useful, for instance, when navigating an Interactive Voice Response (IVR) system where a user is expected to enter a touch tone corresponding to menu item.

The method accepts a string representing the DTMF digit as a parameter:

Parametersstring
Returnsvoid
const call = line.makeCall();
call.sendDigit('1');
In This Article
  • doHoldResume Method
  • completeTransfer Method
  • sendDigit Method

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.