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.
- Navigate to Setup | Feature Settings | Service | Omni-Channel | Omni-Channel Settings
- Check Enable Omni-Channel
- Click Save button
- 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.
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.
Navigate to Setup | Feature Settings | Service | Omni-Channel | Service Channels
Click New button
Complete the configuration:
Service Channel Name:
Case Channel
Developer Name:
CaseChannel
Salesforce Object:
Case
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.
Navigate to Setup | Feature Settings | Service | Omni-Channel | Presence Statuses
Click New button
Complete the configuration:
Status Name:
Ready
Status Options:
Online
Selected Channels:
Case Channel
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
- Go to Users | Permission Sets
- Click the name of the Permission Set which should be granted access to statuses, or create a new one.
- Click Service Presence Statuses Access
- Click Edit
- Select the Service Presence Statuses Access to associate with the Permission Set
- Click Save
- Assign users to the Permission Set by clicking Manage Assignments | Add Assignment.
Assign all users to the Permission Set by clicking Manage Assignments.
Method 2: Setup by Profile
- Go to Users | Profiles
- Click the name of the Profile you want to give access to the statuses
- Click Enabled Service Presence Status Access
- Click Edit
- Select the Service Presence Statuses Access to associate with the profile
- 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
- Go to Apps | App Manager
- In the desired App Name, click on Dropdown menu | Edit
- Select Utility Items | Add Utility Item
- Select Omni Channel
- Save
The Omni Channel Utility Bar Component will now be displayed in the utility bar next to the gadget.
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:
Go to Setup | Feature Settings | Service | Omni-Channel | Routing Configurations
Click New
Complete the configuration:
Routing Configuration Name:
ExternalRoutingConfig
Developer Name:
ExternalRoutingConfig
Routing Model:
External Routing
Complete the rest of the configuration based on your Business Logic
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.
Go to Setup | Users | Queues
Click New
Complete the configuration:
Label:
RoutingQueue
Queue Name:
RoutingQueue
Routing Configuration:
ExternalRoutingQueue
Selected Objects:
Case
Finish the queue configuration, assigning the proper queue members among the four possible filters: Users, Public Groups, Roles, or Roles and Subordinates.
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.
Configure a routing configuration for Chat queue
Create a new routing configuration for the Chat queue and select External Routing as routing model:
Go to Setup | Feature Settings | Service | Omni-Channel | Routing Configurations
Click New
Complete the configuration:
Routing Configuration Name:
Chat External Routing
Developer Name:
Chat_External_Routing
Routing Model:
External Routing
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```
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 Chat transcripts via Omni-Channel and External Routing.
Go to Setup | Users | Queues
Click New
Complete the configuration:
Label:
Chat
Queue Name:
Chat
Routing Configuration:
Chat_External_Routing
Selected Objects:
Chat Transcript
Finish the queue configuration, assigning the proper queue members among the four possible filters: Users, Public Groups, Roles, or Roles and Subordinates.
Click Save
Configure Chat buttons
From Setup, enter “Chat Button” in the Quick Find box and select “Chat Buttons & Invitations”.
Create a new setting or edit an existing one in a similar way to the following:
Configure Presence Statuses for Chat Buttons
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. This enables the customers Chat Button as soon as an agent is either in a Ready or Busy 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 name | Case Channel Selected | Chat Channel Selected | Chat Channel status |
---|---|---|---|
Ready | ✓ | ✓ | Online |
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 Permission Set and assigning it to the User:
Permission Set “b+s External Routing Addon”
- Navigate to Setup | Users | Permission Sets
- Click New
Label: b+s External Routing Addon
API Name: 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 “Chat Transcripts” (for Chat)
Go to Apps | Object Settings
Click on Push Topics
Enable Read permission
Click on Cases
Enable Read and View All permissions.
In order to assign Cases to a failure queue, enable the Edit permission.
Click on Chat Transcripts
Enable Read permission and View All permission
OAuth 2.0 access in Salesforce
Dedicated Routing Adapter UQ requires a Connected App in order to obtain a valid Salesforce Access Token via OAuth 2.
Create a new Connected App
As of Sumemr '25, Connected Apps creation is a functionality controlled by the Allow creation of connected apps
preference, which is disabled
by default for new orgs and can be enabled in the settings page of the new External Client Apps
Setup menu section.
- From Setup, navigate to Apps | External Client Apps | Settings
- Under the
Connected apps
set theAllow creation of connected apps
checkbox toOn
to enable theNew Connected App
button. - Click on
New Connected App
button
If the New Connected App button does not show in the External Client Apps menu, go to Apps | App Manager | New Connected App
The following section shows the minimal required configuration needed in order to allow the external components to connect to your Salesforce Org.
Minimal required configuration
Connected App Name
The name of the Connected App
Example: b+s Case Routing Addon
API Name
The API name of the Connected App
Example: b_s_Case_Routing_Addon
Enable OAuth Settings
Enables authentication via OAuth 2.0. This checkbox must be selected
Callback URL
The URL isn’t actually used, but the value between the client app and the server (the connected app definition) must be the same. Salesforce recommends to use a value that identifies the app. More info in Salesforce documentation
Example: https://example.com
Default: empty
Selected OAuth Scopes
Minimal required Scope: Manage user data via APIs (api)
Enable Client Credentials Flow
Enables authorization through client id and client secret. This checkbox must be selected.
Save
After saving, a Connected App may take up to 8-10 minutes before being fully operational.
Click on the Manage Consumer Details
button to reveal the Consumer Key and the Consumer Secret.
These values are required later in the Routing Adapter ini-File.
Click Cancel
to navigate back, click Manage
and then Edit Policies
.
Client Credentials Flow > Run As
Select the user on behalf of whom the Connected App will run.
The Salesforce User account used to authenticate to the Connected App must have certain permissions and settings in order to communicate with the b+s REST Services:
- The Permission Set
b+s External Routing Addon
must be assigned to the User. - The Profile of the User must have the setting
API Enabled
enabled.
More information about authentication can be found in the Force.com REST API Developer Guide.
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.
To verify that the Streaming API
permissions are enabled in your organization, from Setup, enter User Interface
in the Quick Find box, then select User Interface
.
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:
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;
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.
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
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
For PV use PV<n>
(Range: PV1-PV10
). For ECC variable use the form user.ECCVariableName
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.