CreateBlogSupport
Log inSign up
Home
Webex Contact Center
  • Overview
  • Guides
  • API REFERENCE
  • AI
  • Configuration
  • Data
  • Desktop
  • Journey
  • Media And Routing
  • Changelog
  • SDK
  • Customer Journey Data Service
  • Webex AI Assistant for Developers
  • Webhooks
  • Contact Center Sandbox
  • Using Webhooks
  • Beta Program
  • Webex Status API
  • XML API Deprecation

Webex Contact Center

Campaign Manager Outbound Dialers

A Campaign Manager (CM) is designed with the functionality and features to increase right party contacts and meet campaign objectives in an outbound environment by intelligently managing customer contacts as they move through the system. LCM enables contact centers to reach the right people at the right number to best meet campaign objectives.

An outbound campaign dialer is a tool used in call centers and telemarketing to automate the process of making outgoing calls to a list of contacts. The dialer helps increase efficiency, improve agent productivity, and optimize campaign performance. The Webex Contact Center Dialer using the Next Generation Media Platform (RTMS) supports the following types of pacing modes:

  • Progressive
    • The dialer automatically dials a pre-defined number of contacts, one after another once an agent is available.
    • Calls are connected to agents in a sequential manner, ensuring that agents are available to handle each call.
  • Predictive
    • Uses predictive algorithms to anticipate how many calls to dial when an agent becomes available.
    • Calls are dialed in anticipation of agent availability, aiming to minimize idle time and maximize the number of answered calls.
    • The dialer adjusts the dialing rate based on historical call data and agent performance.
  • IVR
    • Can be run in either progressive or predictive mode.
    • Calls are dialed based on the configured dialing rate and on IVR port availability.
    • If run in predictive mode, the dialing rate is adjusted based on historical call data to maintain configured abandoned rate.

anchorCampaign Manager Requirements

anchor

To bring your own Campaign Manager to Webex Contact Center you need to provide a resource domain, an authentication token and the dialing list.

Resource Domain

A Campaign Manager resource domain is required which uses the following authentication type:

  • Basic Authentication (Username/Password)

And must provide endpoints for

  1. Providing an authentication token. This is a URL that is at the ORG level to provide a token that will subsequently be passed by the dialer on future Campaign Manager requests for records.
  2. Fetching the dialing lists. This is a per Campaign URL that provides records to the dialer
  3. A webhook subscription. This is a per ORG URL that will receive the dispositions of the calls.

The resource domain will need to be configured as a custom connector in Webex Contact Center Control Hub. The custom connector requires the Username, Password and URL needed to obtain the token. See the section on Connecting to the Webex Contact Center below.

Authentication Token

The Campaign Manager needs to provide a token. All external API requests to the Campaign Manager will be authenticated using this token. This includes requests to fetch the dialing list and to subscribe to call disposition events.

The token should have an expiry of 60 minutes and follow the JSON format shown below. WXCC will periodically request the token when it needs to be refreshed, and it will be provided in the header to the Campaign Manager.

{
    "Token": "33672E834DB895DB9DFF52C2C2268D90593C408ABB536C6415E8FFA7E278A2B07D0B5AAF06C06015BD77916FDB8AC8AF5B54C588420E7112F81F8CC02D9EF7E6A49DAB4EB52B73C111DCDFB506040CA37454E290126A95C7BEBBF7E135F37D77C353797FE8B419D6BE15CDBBEC4DABFEFDCC326BCDD79C100962D3065C5B60F3D4C1297844DAA608D649E90AEBBD1928B865F44560184191B1A4237F7DB4C261221ABEC482C3414E85ACA0D466D7799B0AC1E5D7324EFD4EAFEAAD77858B70D30A227C434042721BB9F405213227B52",
   
    "ExpiresIn": 60
}
Dialing List

The Campaign Manager needs to provide the list of contacts in the endpoint associated with the dialing lists. Once the records are retrieved by the dialer, They should not be returned in a subsequent request unless they are intended to be retried.

The dialer will periodically request the list using the unique dialing list fetch URL provided when the campaign was started, refer to the Start Campaign Request API section below. The response to the dialer must be in the JSON format and contain the following fields as shown below. Once the dialer gets a success response it starts dialing out the contacts.

[
{
    "lcmId": "Unique-ID-1",
    "orgId": "YOUR_CUSTOMER_ORGID",
    "campaignId": "YOUR_CAMPAIGN_ID",
    "dialNumber": "5551112345",
    "dialAt": "2024-01-17T00:14:28Z",
    "guardTime": "2024-01-17T23:59:00Z",
    "preferredAgentId": "",
    "customerANI": "",
    "customerData": [
    {
        "name": "LastName",
        "value": "Doe"
    },
    {
        "name": "FirstName",
        "value": "John"
    }
    ],    
    "enforceDialAtTime": true
 }
]

The following table describes the fields required in the response:

KeyDescription
lcmIdVendor supplied Unique ID for the record in a vendor supplied format.
orgIdThe orgId with which the campaign is associated (UUID).
campaignIdCampaign ID with which the record is associated. It must match the Campaign ID provided when the campaign was started.
dialNumberNumber to dial to reach the customer.
dialAtUTC time to begin dialing for the record (used in callback cases). Use the format specified in the example above.
guardTimeUTC time to stop dialing for this record. Use the format specified in the example above.
preferredAgentIdTBD
customerANIAlternate ANI to use when calling this customer. Overrides the campaign setting.
customerDataCustomer metadata consisting of up to 28 unique fields.
enforceDialAtTimeOptional. If enforceDialAtTime is set to true, the dialer will attempt to dial the contact at the given dialAt time. If false, the dialAt time will not be used for dialing the call and the call can be dialed in any order.

Note: For IVR Campaigns, if one wants to control what time a contact should be dialed, the contact list must have a value specified for the "dialAt" field and the “enforceDialAtTime” field set true.

anchorConnecting to the Webex Contact Center

anchor

A custom connector is required to enable the Webex Contact Center to authenticate with your Call Manager resource domain. This connector is utilized by the Dialer only to obtain the token for subsequent requests to the Campaign Manager. To configure the connector:

  1. Login into Webex Admin Portal (Control Hub): https://admin.webex.com.
  2. Choose Contact Center in the left-hand navigation.
  3. Scroll down to Integrations under TENANT SETTINGS.
  4. In the Integrations page choose Custom Connectors to register your campaign manager’s URL.
  5. Enter the information requested in Set Up Custom Connector. The custom connector name must be CampaignManagerCredential

Note: Once your Campaign Manager endpoint is authenticated, the fetch list URI and the call disposition URI can be relative paths that use the same authentication tokens.

anchorUsing the Webex Contact Center Campaign Manager APIs

anchor

WebexCC Campaign Manager APIs can be used to start, stop and update a campaign. Details can be found at: Campaign Manager.

Start Campaign Request:

Used to start a campaign. For each campaign, the campaign id and dialing list fetch URL should be unique.

curl --request POST \
   --url 'https://api.wxcc-YOUR_DC.cisco.com/v1/dialer/campaign' \
   --header 'Accept: application/json' \
   --header 'Authorization: Bearer YOUR_USER_TOKEN' \
   --header 'Content-Type: application/json' \
   --data '{
     "id": "YOUR_CAMPAIGN_ID",
     "vendorVersion": "YOUR_VERSION",
     "campaignType": "YOUR_CAMPAIGN_TYPE",
     "campaignName": "",
     "authToken": "",
     "dialingRate": "1.0",
     "recordCount": "50",
     "entryPointId": "WXCC_CONFIGURED_OUTDIAL_EPID",
     "dialingListFetchURL": "YOUR_DIALINGLIST_FETCHURL",
     "outdialANI": "WXCC_CONFIGURED_OUTDIAL_ANI",
     "noAnswerRingLimit": "32",
     "maxDialingRate": "10.0",
     "abandonRatePercentage": "3.0",
     "predictiveCorrectionPace": "70",
     "predictiveGain": "1.0",
     "reservationPercentage": "100",
     "callProgressAnalysisParams": {
           "cpaEnabled": false, 
           "amdEnabled": false,
           "minSilencePeriod": "608",
           "analysisPeriod": "1000",
           "minimumValidSpeech": "112",
           "maxTimeAnalysis": "4000",
           "maxTermToneAnalysis": "30000",
           "terminatingToneDetect": false
      },
      "ivrPorts": "10"
   }'
Field NameDescription
YOUR_DCThe name of the DC where the org resides, ex: prodeu1, produs1, etc..
YOUR_USER_TOKENThe user token associated with your org
YOUR_CAMPAIGN_IDThe unique id with which the Campaign Request will be started, maximum length 64 characters.
WXCC_CONFIGURED_OUTDIAL_EPIDWebex Contact Center outdial entry point, maximum length 36 characters. An outdial entry point needs to be configured for each campaign.
YOUR_DIALINGLIST_FETCHURLThe unique URL the dialer will use to fetch the list of contacts to dial for the campaign, maximum length 1024 characters. Provided by the campaign manager. ex: https://cm.domain.com/WebService/api/v1/campaign//dialinglist/
WXCC_CONFIGURED_OUTDIAL_ANIWebex Contact Center outdial ANI. This is the ANI (E164) that will be presented to the and must be restricted to the configured outdial entry points, maximum length 50 characters
Update Campaign Request:

Used update a campaign, only certain parameters for a running campaign can be updated.

curl --request PUT \
  --url 'https://api.wxcc-YOUR_DC.cisco.com/v1/dialer/campaign/YOUR_CAMPAIGN_ID' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_USER_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "dialingRate": "1.3",
    "campaignName": "",
    "authToken": "",
    "dialingListFetchURL": "YOUR_DIALINGLIST_FETCHURL",
    "outdialANI": "WXCC_CONFIGURED_OUTDIAL_ANI",
    "noAnswerRingLimit": "32",
    "maxDialingRate": "10.0",
    "reservationPercentage": "100"    
  }'
Field NameDescription
YOUR_DCThe name of the DC where the org resides, ex: prodeu1, produs1, etc..
YOUR_USER_TOKENThe user token associated with your org
YOUR_CAMPAIGN_IDThe unique id with which the Campaign Request will be started, maximum length 64 characters.
YOUR_DIALINGLIST_FETCHURLThe unique URL the dialer will use to fetch the list of contacts to dial for the campaign, maximum length 1024 characters. Provided by the campaign manager. ex: https://cm.domain.com/WebService/api/v1/campaign//dialinglist/
WXCC_CONFIGURED_OUTDIAL_ANIWebex Contact Center outdial ANI. This is the ANI (E164) that will be presented to the and must be restricted to the configured outdial entry points, maximum length 50 characters
Stop Campaign Request:

Used to stop a campaign.

curl --request DELETE \
  --url 'https://api.wxcc-YOUR_DC.cisco.com/v1/dialer/campaign/YOUR_CAMPAIGN_ID' \
  --header 'Authorization: Bearer YOUR_USER_TOKEN'
Field NameDescription
YOUR_DCThe name of the DC where the org resides, ex: prodeu1, produs1, etc..
YOUR_USER_TOKENThe user token associated with your org
YOUR_CAMPAIGN_IDThe unique id with which the Campaign Request will be started, maximum length 64 characters.

anchorUsing the Webex Contact Center Subscription API

anchor

For the Campaign Manager to handle the outcome of the provided customer records, a subscription needs to be registered in order to listen for dialer related events.

Based on the processing of a contact, the Dialer service will publish the outcome via an event. These events are forwarded to users subscribed to the campaign:contact-disposition event. Campaign Managers can then use these events to decide how contacts of the campaign are handled by rescheduling, closing or doing a retry immediately. Or, contact outcomes can be grouped and sorted for analysis.

Note: The webhook receiver must be performant and be able to sufficiently handle the call rate. If the receiver does not respond within 5 seconds, the webhook will be considered a failed post.

Details on the Register Subscription API can be found at: Register Subscription.

Here’s a sample curl command that registers to receive call dispositions:

curl --request POST \
  --url 'https://api.wxcc-YOUR_DC.cisco.com/v2/subscriptions \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_USER_TOKEN' \
  --header 'Content-Type: application/json' \
   --data '{
    "name": "YOUR_CAMPAIGN_MANAGER_SUBSCRIPTION",
    "description": "Connects campaign manager to WXCC Outbound Dialer",
    "eventTypes": [
      "campaign:contact-disposition"
    ],
    "destinationUrl": "YOUR_CAMPAIGN_MANAGER_URL”,
    "secret": "YOUR_SECRET",
    "orgId": "YOUR_CUSTOMER_ORGID",
    "resourceVersion": "campaign:1.0.0"    
  }'

Multiple records can be included in a single message. If the command is successful, you’ll see a response similar to the following example which shows how a contact-disposition event with 2 records is formatted.

{
"data": [{
    "contactId": "Unique-ID-1",
    "destination": "5551112345",
    "taskId": "199dda6a-3018-4b1c-bd4f-55519343b253",
    "telephonyOutcome": 3,
    "businessOutcome": null,
    "agentId": "",
    "callbackPreferredAgentId": "",
    "callStartTime": "2023-12-01T16:11:34.794Z",
    "callEndTime": null
},{
    "contactId": "Unique-ID-2",
    "destination": 5551116789,
    "taskId": "1fafff97-e821-4a35-b94b-20ef22388b4e",
    "telephonyOutcome": 3,
    "businessOutcome": null,
    "agentId": "",
    "callbackPreferredAgentId": "",
    "callStartTime": "2023-12-01T16:11:34.812Z",
    "callEndTime": null
}],
    "id": "757f4bf9-9672-4a07-a964-38b3d0eb7664",
    "source": "/com/cisco/wxcc/d6159130-7d37-4dc1-aba8-7ef56fb099d7",
    "specversion": "1.0",
    "type": "campaign:contact-disposition",
    "datacontenttype": "application/json",
    "comciscoorgid": "YOUR_CUSTOMER_ORGID",
    "campaignId": "YOUR_CAMPAIGN_ID"
}

The following table describes the keys returned in the response:

KeyDescription
contactIdThe unique ID supplied when the record was retrieved.
destinationCustomer dialed number provided when the record was retrieved.
taskIdThe interactionId of the customer call
campaignIdCampaign ID with which the record is associated with. Must match the Campaign ID when the campaign was started.
telephonyOutcomeState of the contact at the end of call. It can have one of the following values (see Description Of Telephone Outcomes below for more details): INVALID_NUMBER, NO_ANSWER, BUSY, FAX, AMD, NETWORK_VOICEMAIL, NO_RINGBACK, OPERATOR_INTERCEPT, CALLBACK_REQUESTED, ABANDONED, ABANDONED_TO_IVR, FLUSHED_CAMP_STOP, GUARD_TIME_EXPIRY, FLUSHED_ERROR, DNC_REQUESTED, LIVE_VOICE, or INVALID_CAD.
businessOutcome (if Applicable)The WXCC auxiliary codes that the agent can enter as an outcome of the call.
callbackPreferredAgentIdN/A
agentIdID of the agent who answered the call (UUID).
callbackTimeN/A
callStartTimeUTC call start time.d
callEndTimeUTC call end time.
Description Of Telephone Outcomes

The following table describes the various telephonyOutcome values:

Code NameDescriptionID
INVALID_NUMBERNumber not in service.1
NO_ANSWERCustomer did not answer.2
BUSYNumber was busy.3
FAXFAX machine detected.4
AMDAnswering machine detected.5
NETWORK_VOICEMAILNetwork answering machine / voicemail.6
NO_RINGBACKError condition on network (temporary).7
OPERATOR_INTERCEPTError condition on network (temporary).8
CALLBACK_REQUESTEDCustomer requested callback.9
ABANDONEDAbandoned by the dialer.10
ABANDONED_TO_IVRAbandoned by the dialer and redirected to IVR.11
FLUSHED_CAMP_STOPRecord flushed due to campaign end / stop.12
GUARD_TIME_EXPIRYThe guard time for the record expired.13
FLUSHED_ERRORFlushed due to a system error.14
DNC_REQUESTEDCustomer asked to be placed on the DNC list.15
LIVE_VOICELive voice detected.16
INVALID_CADCAD Map Size Exceeds Limit.17
DIAL_AT_TIME_INVALIDThe dialAt time is not valid (too late to dial as per configuration).18
In This Article
  • Campaign Manager Requirements
  • Connecting to the Webex Contact Center
  • Using the Webex Contact Center Campaign Manager APIs
  • Using the Webex Contact Center Subscription API

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.