Skip to main content
Version: 2.9

Cisco UQ

Limitations

  • External Routing can be used within Omni-Channel in Salesforce Lightning Console. Using both External Routing and Omni-Channel routing in the same Salesforce organization is not supported.
  • Status-Based Capacity Model is not supported for Cisco UQ.
  • Transfer scenarios between External Routing Queues and Omni-Channel Queues are not supported.
  • Pause Work feature introduced with Enhanced Omni-Channel is not supported for Cisco UQ.
  • Omni-Channel Interruptible Capacity Model is not available for Cisco UQ. Agent capacity and channel interruptibility are managed by Cisco CCE.
  • The agent might see call workitems and media workitems both coming in at the same time if they are routed at the same time. This is a known issue and will be improved in a future release.

Salesforce Omni-Channel

This guide provides the basic information to be able to configure External Routing for Omni-Channel in Salesforce.

Enable Omni-Channel

Enable Omni-Channel in the Salesforce organization.

  1. From Setup, enter Omni-Channel Settings in the Quick Find box, then select 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. From Setup, enter Service Channels in the Quick Find box, then select Service Channels.
  2. Click New button.
  3. Complete the configuration:
    • Enter the Service Channel Name.
    • The Developer Name is populated automatically. It can be changed if desired.
    • Select the Salesforce Object which should be routed via this Service Channel.
  4. Click Save button.

Create and assign 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.

The configuration for the Presence Statuses is described here

Full State Mapping between Cisco and Salesforce

To support the full state mapping between Cisco and Salesforce, there has to be an Available state for each possible Cisco channel combination. The full mapping table containing one Salesforce Object routed via each Cisco channel is displayed below.

If you don't use a messaging or task channel, don't configure the Presence Statuses containing Salesforce Objects routed via these channels.

tip

If you route multiple Salesforce Objects via the same Cisco channel, add all the corresponding Service Channels to each Presence Status related to the Cisco channel.

Omni Presence StatusOmni Service ChannelsCisco Channels
Available AllPhone, Messaging, CasesVoice, Chat, Task
Available VoicePhoneVoice
Available MessagingMessagingChat
Available CasesCasesTask
Available Voice + MessagingPhone, MessagingVoice, Chat
Available Voice + CasesPhone, CasesVoice, Task
Available Messaging + CasesMessaging, CasesChat, Task

Integrate External Routing for Omni-Channel

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. From Setup, enter Routing Configurations in the Quick Find box, then select Routing Configurations.
  2. Click New button.
  3. Complete the configuration:
    • Enter the Routing Configuration Name.
    • The Developer Name is populated automatically. It can be changed if desired.
    • Select External Routing as the Routing Model.
  4. Complete the rest of the configuration based on your Business Logic.
  5. Click Save button.

Queue for External Routing

Create a new Queue, configure and connect it to the Routing Configuration created previously.

tip

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.

  1. From Setup, enter Queues in the Quick Find box, then select Queues.
  2. Click New button.
  3. Complete the configuration:
    • Enter the Label.
    • Enter the Queue Name.
    • Select the Routing Configuration which was created in the previous step.
    • Select the Supported Objects which should be routed via the queue. They should be the same as configured within the Service Channels.
  4. Complete the rest of the configuration, assign the proper queue members among the four possible filters: Users, Public Groups, Roles, or Roles and Subordinates.
  5. Click Save button.

Messaging for In-App and Web Configuration (Optional)

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.
  • Chats routed with Omni-Channel cannot use supervisor whisper messages and assistance flags with Omni-Channel Supervisor.
  • Live Agent Chats are not supported.

Configure Messaging for In-App and Web

The configuration steps are found in the official Salesforce documentation.

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:

  1. From Setup, enter Permission Sets in the Quick Find box, then select Permission Sets.
  2. Click New button.
  3. Complete the configuration:
    • Enter the Label, e.g. b+s External Routing Addon.
    • The API Name is populated automatically. It can be changed if desired.
  4. Click Save button.
  5. Set permission for the Push Topic objects and all objects you want to route. In the following example: Cases and Messaging Sessions (for Chat):
    • Click Object Settings within the previously created Permission Set.
    • Click Push Topics and enable Read permission.
    • Click Cases and enable Read and View All permissions. In order to assign Cases to a failure queue, enable the Edit permission.
    • Click Messaging Session and enable Read and View All permission.

OAuth 2.0 Access in Salesforce

The Routing Adapter for UQ requires a Connected App in order to obtain a valid Salesforce Access Token via OAuth 2.0.

Create a new Connected App

The Connected App can be created as described here.

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 permission is 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:

Salesforce Developer Console

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

Next, modify the pushTopic.Name value in the code snipped below and execute it:

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 are 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 the b+s Connects for Service Cloud Voice package is installed and configured in the Salesforce org.

The Cisco Universal Queue specific fields of the Contact Center are described here.