- Home
- /
- Article
Webex Contact Center Business Rules Engine User Guide
Business Rules Engine (BRE) in Webex Contact Center allows customers to upload specific data that the system can access during runtime to make routing decisions or to display information to call agents.
Introduction
About Cisco Business Rules Engine
Using Cisco© Business Rules Engine (BRE), you can upload your data into the Webex Contact Center environment for custom routing and for general implementation. The system retrieves the data at run time and uses it for routing decisions or for displaying information to the agent.
For example, a tenant wants to route calls to a specific group of agents based on the Automatic Number Identification (ANI) dialed. In this scenario, the tenant can simply upload a list of ANIs. If the ANI of the incoming call is on that list, the system routes the call to the group of agents specified in the list. If the ANI is not on the list, the system routes the call to the general queue.
A typical BRE implementation involves these major components:
-
The business Rules Engine utility provides an interface for creating domains and rule sets. The BRE requires an incoming decision request to be associated with a domain. The domain contains a set of rules. Each rule is assigned a priority. The BRE tries to match the domain’s highest priority rule with the decision request based on the conditions in the rules.
-
The BRE DataSync configuration utility provides an interface for defining the Data Sync instances to import the data into the BRE database. After the tenant defines the Data Sync instance, the tenant can upload a CSV file. The system converts the uploaded comma-separated value data into records in the BRE database.
-
Flow Designer is a drag-and-drop UI used to define flows that orchestrate and automate the components of the Webex Contact Center. You can create a flow that invokes the BRE.
Data Handling Guidelines
To maintain the integrity and security of the BRE, you must comply with the following data handling guidelines:
-
Permissible Data Types: You must upload data that is essential for the operation and functionality of the BRE. This includes, but is not limited to, business rules, configurations, and non-sensitive operational data.
-
Restriction on PII: You must refrain from uploading any Personally Identifiable Information (PII) to the BRE except for the ANI data. PII includes, but is not limited to:
- Full names
- Social security numbers
- Email addresses
- Physical addresses
- Financial information
ANI data refers to the telephone number associated with the calling party. ANI data is the only type of PII that is permissible for uploading to the BRE. This exception is to support specific business functionalities that rely on ANI data.
Business Rules Engine Implementation
Creating a Set of Rules
The Business Rule Engine utility is invoked by the flow when a new voice request is
presented to the ACD. This section explains how rules can be set up so that the BRE
utility can assist the ACD to route the incoming request.
The BRE requires an incoming decision request to be associated with a domain and a set of rules. The BRE tries to match the highest priority rule with the decision request based on conditions in the rules.
Be sure to create a ruleset to cover all cases. For example, you should create rules for both Match Found and Match Not Found conditions. Or you could set up rules for multiple conditions. For example, ANI Match or ANI No Match, then Gold or Silver. In this case, you must create a rule for each possibility. For example:
-
ANI Match and Gold
-
ANI Match and Silver
-
ANI No Match and Gold
-
ANI No Match and Silver
To create a set of rules:
1 |
Log in to the Cisco Webex Contact Center Management Portal. |
2 |
Click the path Cisco Webex Contact Center Management Portal > Business Rules to launch the Business Rules Engine utility. BRE leverages Common Identity and a Single Sign‐On interaction. If the tenants have already logged in to Cisco Webex Contact Center Management Portal, they will automatically gain access to the BRE utility for their organization. |
3 |
Create an attribute to associate with your organization: |
4 |
Select Contexts, to display the Contexts page. |
5 |
To create rules, select the Contexts page. The following example code returns the value NotFound for the attribute routeInfo, if a number the caller dialed from (ANI) did not match an ANI on the list the tenants uploaded to the BRE database. |
Configure a BRE DataSync Instance
The BRE DataSync accesses a database to make routing decisions. You must periodically update the database with the appropriate information. This section describes how the BRE DataSync utility can be configured to update the BRE repository.
Agents do not have access to the BRE DataSync utility.
The tenant administrator must create a BRE DataSync instance for every data set that the Rules Engine will consult during its decision-making process. The administrator can create the data set or upload a CSV file. The data is converted into records in the BRE repository.
Before you begin
Contact Cisco Customer Service Account Manager to get access to the BRE DataSync account.
Creating a Flow with BRE Request Activity
You can create flows using the Flow Designer interface available in the Webex Contact Center Management Portal. Create a flow with the BRE Request activity in the Webex Contact Center Flow Designer.
For more information about configuring the flow, see the BRE Request.
BRE Request
Use the BRE Request activity to retrieve the data from your organization's Business Rules Engine (BRE) to use in the flow. The BRE Request activity uses standard HTTP protocols to fetch data from the BRE.
The following sections enable you to configure the BRE Request activity:
General Settings
Parameter |
Description |
---|---|
Activity Label |
Enter a name for the activity. |
Activity Description |
(Optional) Enter a description for the activity. |
Query Parameters
As part of the BRE Request, you can pass the parameters that are provided in the API call to the BRE. In the Key‐Value columns, you can enter the key for the query and the associated value to send along with the query. You can also use the double curly braces syntax to pass variable values.
The BRE activity has one predefined Query Parameter: context
. This query parameter is passed in the API call to the BRE.
The TenantID
is automatically injected as a parameter and does not need to be configured.
Parameter |
Description |
---|---|
Context |
Contains the reason for the request. This mandatory parameter can't be edited or deleted. This parameter must contain the same value as the value specified in the Attribute |
ANI |
Contains the originating phone number of the call. This is a default parameter that you can edit or delete, based on the rules configuration in the BRE. A sample value for ANI is |
Response Timeout | Specifies the connection timeout for the BRE Request. Default is set at 2000 milliseconds. |
Number of Retries |
Specifies the number of times the BRE Request is attempted after failure. This parameter is used if the status code is 5xx; for example, 500 or 501. |
To add a query parameter, click Add New. This adds a row where you can enter the key value pairs. You can add as many query parameters as required as part of the BRE Request.
Parse Settings
This section enables you to parse the response from the BRE Request into different variables:
Parameter |
Description |
---|---|
Response Variable |
Choose a variable to which you want to extract a particular section from the BRE Request response object. You can choose only Custom Flow variables from the drop-down list. |
Path Expression |
Define the Path Expression for parsing the response object. Depending on the kind of data structure of the response object and the use cases for extracting a subset of that information, the Path Expression varies. Data is normalized to an object hierarchy before Path Expression execution, so JSONPath is used in the response object regardless of the configured Content Type. |
Output Variables
The BRE Request returns two output variables:
-
BRERequest1.httpResponseBody
: Returns the response body for the BRE Request. -
BRERequest1.httpStatusCode
: Returns the status code of the BRE Request.These response codes are classified into the following categories:
-
Informational responses (100–199)
-
Successful responses (200–299)
-
Redirects (300–399)
-
Client errors (400–499)
-
Server errors (500–599)
-
Content Type Formats
The following examples describe sample input Content Type formats and the JSON response.
Content Type XML
Use this tool to convert XML into JSON format https://codeshack.io/xml-to-json-converter/.
XML Input Format:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Test application</body>
</note>
Data/JSON Normalized Response
{
"note": {
"to": "Tove",
"from": "Jani",
"heading": "Reminder",
"body": "Test application"
}
}
Example JSON Path Expression: Use $.note.from
to get the value as Jani
.
Content Type TOML
Use this tool to convert TOML to JSON format https://www.convertjson.com/toml-to-json.htm.
TOML Input Format:
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00
Data/JSON Normalized Response
{
"title": "TOML Example",
"owner": {
"name": "Tom Preston-Werner",
"dob": "1979-05-27T15:32:00.000Z"
}
}
Example JSON Path Expression: Use $.owner.name
to get the value as ‘Tom Preston-Werner’
.
Content Type YAML
Use this tool to convert YAML to JSON format https://www.convertjson.com/yaml-to-json.htm.
YAML Input Format:
# An employee record
martin:
name: Martin D'vloper
job: Developer
skill: Elite
Data/JSON Normalized Response
{
"martin": {
"name": "Martin D'vloper",
"job": "Developer",
"skill": "Elite"
}
}
Example JSON Path Expression: Use $.martin.job
to get the value Developer
.
Content Type JSON
Use the JSON Expression Evaluator https://jsonpath.com/.
JSON Input Format:
{
"martin": {
"name": "Martin D'vloper",
"job": "Developer",
"skill": "Elite"
}
}
Data/JSON Normalized Response
{
"martin": {
"name": "Martin D'vloper",
"job": "Developer",
"skill": "Elite"
}
}
Example JSON Path Expression: Use $.martin.job
to get the value Developer
.