Cisco UQ for Ext MRI v3.0
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 [7] from Salesforce.
Enable Omni-Channel
Enable Omni-Channel in the Salesforce organization. In Setup, enter “Omni-Channel” in the Quick Find box, then select Omni-Channel Settings. From Omni-Channel Settings, enable Omni-Channel.
Create Service Channels
From Setup, enter “Service Channels” in the Quick Find box, then select Service Channels. Use the New Button to create new Service Channels.
You need a Service Channel for all objects that you want to route. This also includes the Chat Service Channel if it should not be present after enabling Omni Channel and Chat.
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.
From Setup, enter “Presence Status” in the Quick Find box, then select Presence Statuses and click the “New” Button to create a new Presence State:
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 Manage Users | Permission Sets
- Click the name of the Permission Set which should be granted access to statuses
- 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.
Assign all users to the Permission Set by clicking Manage Assignments.
Method 2: Setup by Profile
- Go to Manage Users | Profiles
- Click the name of the Profile you want to give access to the statuses
- Click Service Presence Statuses 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. Please 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
From Setup, enter “Routing Configurations” in the Quick Find box and select “Routing Configurations”.
Create a new routing configuration and select External Routing as routing model.
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. Assign the Queue Members before saving the New Queue.
Finish the queue configuration, assigning the proper queue members among the four possible filters: Users, Public Groups, Roles, or Roles and Subordinates:
Integrate External Routing for Omni-Channel and Chat configuration
Salesforce allows External Routing configurations for Omni-Channel and Chat working at the same time. Please 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:
Queue configuration for Chat
From Setup, enter “Queues” in the Quick Find box and select “Queues” to create a dedicated Queue. This queue is used to route Chat transcripts via Omni-Channel and External Routing.
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.
Salesforce Classic
- From Setup, navigate to Build | Create | Apps.
- Next to the title Connected Apps, click New.
Salesforce Lightning
- From Setup, navigate to Apps | App Manager
- In title bar click button New Connected App
The following print screen shows the minimal configuration needed in order to allow b+s components to connect to your Salesforce organization:
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://connectsforsalesforce.app
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
Please note that 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 Secret and the Consumer Key.
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.
The routing Adapter uses the official OAuth 2.0 terms ClientId
(SfdcOauthClientId) and Client Secret
(SfdcOauthClientSecret), where Salesforce uses, respectively, Consumer Key
and Consumer Secret
.
Salesforce Connected App: RoutingAdapter.ini
Consumer Key: SfdcOauthClientId
Consumer Secret: SfdcOauthClientSecret
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
Channel: Ticket
or Chat
Media Routing Domain Id: Media Routing Domain of the Cisco media channel
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 this channel is online.
Presence State Available All
Salesforce Omni-Channel presence status in which all channels are online.
Presence State Busy All
Salesforce Omni-Channel presence status in which all channels are busy.
Work Item Id Variable
Variable used to transfer the Salesforce work item ID with the Routing Adapter
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
Defines the information to show in a presented Salesforce Omni-Channel task.
Object API Name
Must be a Salesforce API name
Example: Case
Field API Names
Field API names separated by commas
Example: Subject,Priority,Status,CaseNumber
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.