Skip to main content
Version: 5.13

Cisco UQ

Limitations

  • External Routing can be used with Omni-Channel in Salesforce Classic Console and Lightning Console. Using both External Routing and Omni-Channel routing in the same Salesforce organization is not supported.

  • Transfer scenarios between External Routing Queues and Omni-Channel Queues are not supported.

  • Status-Based Capacity Model is not supported for Cisco UQ.

  • Pause Work feature introduced with Enhanced Omni-Channel is not supported for Cisco UQ.

Salesforce Omni-Channel

In order to be able to use External Routing in Salesforce, Omni-Channel must be properly configured. Make sure to use Salesforce standard APIs and streaming APIs, versions 48.0 or later to be able to use External Routing.

This guide provides the basic information to be able to configure External Routing for Omni-Channel in Salesforce. If additional information is required, consult the document Omni-Channel for Administrators Guide from Salesforce.

Enable Omni-Channel

Enable Omni-Channel in the Salesforce organization.

  1. Navigate to Setup | Feature Settings | Service | Omni-Channel | Omni-Channel Settings
  2. Check Enable Omni-Channel
  3. Click Save button
  4. Refresh the page to display the Omni-Channel Settings

Create Service Channels

Service Channels define what types of work (like chats, cases, or custom objects) can be routed through Omni-Channel.

info

You need a Service Channel for each objects you want to route. This also includes the Chat Service Channel if it is not present after enabling Omni-Channel.

  1. Navigate to Setup | Feature Settings | Service | Omni-Channel | Service Channels

  2. Click New button

  3. Complete the configuration:

    Service Channel Name: Case Channel

    Developer Name: CaseChannel

    Salesforce Object: Case

  4. Click Save button

Create Presence Statuses

The initial deployment of the External Routing Add-on uses two generic Presence Statuses: Ready and Busy. Consequently, all Service Channels for External Routing must be assigned to the same Ready State.

  1. Navigate to Setup | Feature Settings | Service | Omni-Channel | Presence Statuses

  2. Click New button

  3. Complete the configuration:

    Status Name: Ready

    Status Options: Online

    Selected Channels: Case Channel

  4. Click Save button

Set Access to Presence Statuses

To make the newly created Presence Statuses visible for users, assign them to each agent by using either Permission Sets or Profiles:

Method 1: Setup by Permission Set

  1. Go to Users | Permission Sets
  2. Click the name of the Permission Set which should be granted access to statuses, or create a new one.
  3. Click Service Presence Statuses Access
  4. Click Edit
  5. Select the Service Presence Statuses Access to associate with the Permission Set
  6. Click Save
  7. Assign users to the Permission Set by clicking Manage Assignments | Add Assignment.
tip

Assign all users to the Permission Set by clicking Manage Assignments.

Method 2: Setup by Profile

  1. Go to Users | Profiles
  2. Click the name of the Profile you want to give access to the statuses
  3. Click Enabled Service Presence Status Access
  4. Click Edit
  5. Select the Service Presence Statuses Access to associate with the profile
  6. Click Save

Presence Configuration

The default presence Configuration does not have to be updated in order to install the Routing Adapter. Keep in mind that the capacity settings are ignored.

Add Omni-Channel as a Utility Bar Component

As a last step in the Omni-Channel configuration, the Utility Bar Component will need to be configured in the App Manager

  1. Go to Apps | App Manager
  2. In the desired App Name, click on Dropdown menu | Edit
  3. Select Utility Items | Add Utility Item
  4. Select Omni Channel
  5. Save

The Omni Channel Utility Bar Component will now be displayed in the utility bar next to the gadget.

Utility Bar Components

Integrate External Routing for Omni-Channel configuration

External routing requires a separate Routing Configuration and Queue in Omni-Channel. These separate objects define routing behavior and assign work to agents.

Routing Configuration

Create a new Routing Configuration and select External Routing as routing model:

  1. Go to Setup | Feature Settings | Service | Omni-Channel | Routing Configurations

  2. Click New

  3. Complete the configuration:

    Routing Configuration Name: ExternalRoutingConfig

    Developer Name: ExternalRoutingConfig

    Routing Model: External Routing

  4. Complete the rest of the configuration based on your Business Logic

  5. Click Save

Queue for External Routing

From Setup, enter “Queues” in the Quick Find box and select “Queues”.

Create a new queue, configure and connect it to the routing configuration created previously.

  1. Go to Setup | Users | Queues

  2. Click New

  3. Complete the configuration:

    Label: RoutingQueue

    Queue Name: RoutingQueue

    Routing Configuration: ExternalRoutingQueue

    Selected Objects: Case

  4. Finish the queue configuration, assigning the proper queue members among the four possible filters: Users, Public Groups, Roles, or Roles and Subordinates.

  5. Click Save

Integrate External Routing for Omni-Channel and Chat configuration

Salesforce allows External Routing configurations for Omni-Channel and Chat working at the same time. Important note: there are limitations that have to be considered:

  • It is not possible to transfer a chat from a button using Chat routing to a button using Omni-Channel routing
  • It is not possible to use direct-to-agent routing with chats routed by Omni-Channel
  • It is not possible to use chat conferencing with chats routed by Omni-Channel
  • Queues with multiple object types can cause problems when using Omni-Channel routing for chats. It is recommended to create a separate queue for each object type, such as Chats, Cases, and Leads, instead of setting queues to handle multiple object types
  • Chats routed with Omni-Channel cannot use supervisor whisper messages and assistance flags with Omni-Channel Supervisor

Remember these limitations when extending the base configuration from the previous chapters for Chat and External Routing.

Enable Wrap-Up Reason for a Media Channel

The Wrap-Up Reason can be enabled for a Media Channel in the Media Routing Domain Settings section of the Media block.
Select "Enable" from the "Wrap-Up Reason" dropdown of the Media channel the setting should be enabled for.
Enable Wrap-Up reason for Media Channel

Configure a routing configuration for Chat queue

Create a new routing configuration for the Chat queue and select External Routing as routing model:

  1. Go to Setup | Feature Settings | Service | Omni-Channel | Routing Configurations

  2. Click New

  3. Complete the configuration:

    Routing Configuration Name: Chat External Routing

    Developer Name: Chat_External_Routing

    Routing Model: External Routing

  4. Complete the rest of the configuration based on your Business Logic. Example:

    Routing Priority: 1

    Push Time-Out(seconds): 20

    Units of Capacity: ``1.00```

  5. Click Save

Queue configuration for Chat

Create a new queue, configure and connect it to the routing configuration created previously. This queue is used to route Messaging Sessions via Omni-Channel and External Routing.

  1. Go to Setup | Users | Queues

  2. Click New

  3. Complete the configuration:

    Label: Chat

    Queue Name: Chat

    Routing Configuration: Chat_External_Routing

    Selected Objects: Messaging Session

  4. Finish the queue configuration, assigning the proper queue members among the four possible filters: Users, Public Groups, Roles, or Roles and Subordinates.

  5. Click Save

Configure Presence Statuses for Chat

With the provided configuration, Chat will be found in state “online” whenever an agent enters the state “ready”, as all the channels share the same Presence State. In order to avoid this and have the ability to manage the Chat channel independently from all other media channels, it is best to configure two additional Presence Statuses:

Presence Status nameCase Channel SelectedChat Channel SelectedChat Channel status
ReadyOnline
Ready for Cases-Offline
Ready for Chats-Online
Busy--Offline

Behavior of External Routing for Omni-Channel

For further insights into External Routing for Omni-Channel consult the Salesforce Omni-Channel Developer Guide.

Salesforce User for Routing Adapter

The Routing Adapter requires a Salesforce User in order to login to Salesforce and to receive and query routing information. This User must have the permission to:

  • Read the PushTopic standard object to receive notifications
  • Read the entities to be routed (e.g. Case)
  • Reassign entities (e.g. Case) to a failure queue
  • Read AgentWork in order to get re-route reasons

This can be achieved by configuring a new Salesforce Profile and Permission Set and assigning them to the User.

Configuration steps

The following configuration steps are required to allow the b+s Routing Adapter to connect to the Streaming API:

  1. Create a Permission Set for the Integration User (created in step 3)
  2. Clone and modify the profile Minimum Access - API Only Integrations
  3. Create an integration user for the b+s Routing Adapter
  4. Create and configure an External Client App
  5. Assign the Permission Set to the External Client App

Permission Set “b+s External Routing Addon”

This Permission Set will be used for the Integration User, which will be created later.

  1. Navigate to Setup | Users | Permission Sets

  2. Click New

    • Label: for example b+s External Routing Addon
    • API Name: for example b_s_External_Routing_Addon

Set permission for the Push Topic objects and all objects you want to route. In the following example: “Case” and “Messaging Session” (for Chat)

  1. Go to Apps | Object Settings

  2. Click on Push Topics

    • Enable Read permission
  3. Click on Cases

    • Enable Read and View All permissions.
    • In order to assign Cases to a failure queue, enable the Edit permission.

If you want to route Messaging Sessions, continue with the next step. Please note, Messaging Session requires the Digital Engagement Salesforce License.

  1. Click on Messaging Sessions

    • Enable Read permission and View All permission
    • In order to assign Messaging Sessions to a failure queue, enable the Edit permission.
info

Please make sure you also update the Field Permissions for the objects mentioned above and enable Read Access for all fields you configured in the SFDCRoutingAdapter.ini

Minimum Access - API Only Integrations profile

This profile is a clone of the Minimum Access - API Only Integrations profile and is used to integrate with the b+s Routing Adapter.

  1. Navigate to Setup | Users | Profiles

  2. In the Profiles list, search for the Profile Minimum Access - API Only Integrations

  3. Click on the profile name to open it in view mode

  4. On the top of the page, click the Clone button

  5. Enter a new Profile Name, for example: b+s External Routing Addon

  6. Click on Save button

    • The newly created profile opens
  7. Navigate to System Permissions

    • Make sure the following Permissions are enabled:
      • API Enabled
      • Api Only User

Integration User for the b+s Routing Adapter

info

The following is an example configuration and describes the minimum required permissions in order for the b+s Routing Adapter to work.

tip

The Integration User does not require a b+s Connects for Salesforce license.

  1. Navigate to Setup | Users | Users

  2. Click on New User button

    • Enter First Name, Last Name, and all other mandatory fields
    • User License: Salesforce Integration
    • Profile: select the profile created in the previous step (Minimum Access - API Only Integrations)
  3. Click on Save button

  4. Open the new User record

  5. Assign the Permission Set License Salesforce API Integration

  6. Assign the Permission Set created earlier (b+s External Routing Addon)

OAuth 2.0 access in Salesforce

Dedicated Routing Adapter UQ requires an External Client App in order to obtain a valid Salesforce Access Token via OAuth 2.

Create a new External Client App

  • From Setup, navigate to Apps | External Client Apps | External Client App Manager
  • Click on New External Client App button

The following section shows the minimal required configuration needed in order to allow the external components to connect to your Salesforce Org.

  1. External Client App - Basic Information

    • External Client App Name: the name of the External Client App, for example: b+s Case Routing Addon
    • API Name: the API name of the External Client App, for example: b_s_Case_Routing_Addon
    • Contact Email: < your email >
    • Distribution State: select Local
  2. External Client App - API (Enable OAuth Settings)

    • Select: Enable OAuth
    • App Settings
    • OAuth Scopes
      • Select OAuth scopes:
        • Manage user data via APIs (api)
    • Flow Enablement
      • Select: Enable Client Credentials Flow
  3. Click on Create button

  4. Change to Tab Policies

    • Click on Edit button
  5. Policies - OAuth Policies

    • Plugin Policies
      • Permitted Users: select Admin approved users are pre-authorized
      • Confirm the change
    • OAuth Flows and External Client App Enhancements
    • App Authorization
      • Refresh Token Policy: select Immediately expire refresh token
      • IP Relaxation: select Enforce IP restrictions
  6. Policies - App Policies

    • Start Page: none
    • Select Permission Sets: Assign the Permission Set created before (b+s External Routing Addon)
  7. Click on Save button

  8. Change to Tab Settings

    • Section OAuth Settings, click Consumer Key and Secret button

    • Wait for email and verify your identity

    • A new browser tab opens with the Consumer Details

    • Click Copy and save the Consumer Key and the Consumer Secret. The consumer key and secret are used later to create in the b+s Routing Adapter ini-File.

Important: maintain security by periodically rotating secrets

Make sure you regularly rotate your Client IDs and Client Secrets to keep your integrations secure. You can follow the process described in Stage, Rotate, and Delete OAuth Credentials for an External Client App.

After generating new credentials, remember to update the Client ID and Client Secret in the b+s Routing Adapter ini-File. This will prevent any disruptions in your existing integrations.

Streaming API in Salesforce

Salesforce uses the Streaming API to push routing events to 3rd party applications.

In order to allow the Routing Adapter to receive notifications, the Salesforce Streaming API must be available and ready to use inside the organization.

Required permission

The Streaming API permission must be enabled.

Navigate to Setup | User Interface | User Interface. and verify that the Enable Streaming API permissions are enabled in your organization.

Push Topic

In order to notify the Routing Adapter about new cases, chats and other entities, it is necessary to configure a Streaming API Push Topic to which the Routing Adapter will subscribe.

The easiest and most convenient way to provide a Push Topic is to use the Salesforce Developer Console:

Open the Developer Console

Inside the Developer Console, click Debug | Open Execute Anonymous Window or press CTRL+E.

Next, modify the pushTopic.Name value and execute the following code snippet:

PushTopic pushTopic = new PushTopic();
pushTopic.Name = 'PT_CNX_ExternalRouting';
pushTopic.Query = 'Select Id,Serial,QueueId,WorkItemId,IsPushed,IsTransfer,ServiceChannelId,LastDeclinedAgentSession,CreatedDate from PendingServiceRouting where RoutingModel = \'ExternalRouting\'';
pushTopic.ApiVersion = 59.0;
pushTopic.NotifyForOperationCreate = true;
pushTopic.NotifyForOperationDelete = true;
pushTopic.NotifyForOperationUpdate = true;
pushTopic.NotifyForOperationUndelete = false;
pushTopic.NotifyForFields = 'Referenced';
insert pushTopic;
info

The query provided in pushTopic.Query defines the matching set of data that will cause a notification for the Routing Adapter. Multiple Routing Configurations / multiple Routing Adapter instances not supported.

tip

In order to delete a PushTopic, use the Developerforce Workbench.

Installation in Salesforce

The installation steps in this chapter are made inside the Salesforce user interface.

It is assumed that you already have the Connects for Cisco Contact Center package installed and configured in your Salesforce org.

This chapter only describes Cisco Universal Queue related fields.

Global

Deployment Type

Set the Deployment Type to Cisco Universal Queue to enable Cisco Universal Queue related fields.

Media

Use Legacy Cisco Universal Queue

Set this field to No

Default: No

danger

Note: Cisco Universal Queue Legacy is no longer supported.

Cisco Universal Queue


Media Routing Domain Settings

In this section you can configure one or two media channels.

Channel

This label corresponds to the Channel name to be configured.

Default: Ticket or Chat

Media Routing Domain Id

Media Routing Domain Id of the Cisco media channel. The Cisco engineer has to provide the identifier of the media Channel. More information in Media Routing Domains

Wrap-Up Reason

If Enabled, gives the agent the possibility of setting up Wrap-Up Reasons for Media Routing Work Items.

Max Number of Work Items

Maximum number of dialogs to be routed to the agent simultaneously per channel.

Online Service Presence Status

Salesforce Omni-Channel presence status in which only the configured channel is online.


Presence State Available All

Salesforce Omni-Channel presence status in which all media channels are online.

Presence State Busy All

Salesforce Omni-Channel presence status in which all media channels are busy.

Work Item Id Variable

The peripheral variable (1-10) or ECC variable that is used to receive the Salesforce work item ID from the Routing Adapter.

Default: empty

info

For PV use PV<n> (Range: PV1-PV10). For ECC variable use the form user.ECCVariableName

info

This setting has to match with the “MediaUrlVariable” setting in the Routing Adapter UQ SFDCRoutingAdapter.ini configuration file.

Support Chat Button State

This setting has to be checked in order to switch the chat button to offline, if all agents are talking or on full capacity.

Agent Work Layout

Please refer to the Agent Work Layout section of the Configuration page.

Additional Media Settings

End Media Task From Gadget

If checked, a button is displayed on the gadget that ends an Omni Work Item and removes it from the Omni Widget.

Disabled Media Actions

  • Chat Item Reject : If checked button to reject Chats is disabled.
  • Ticket Item Reject : If checked button to reject Tickets is disabled.
  • Task Screen Pop : If unchecked, new tasks pop to the screen. If checked, new task will not screen pop.