- Release Notes
- Getting Started
- Setup and Configuration
- Automation Projects
- Dependencies
- Types of Workflows
- Control Flow
- File Comparison
- Automation Best Practices
- Source Control Integration
- Debugging
- Logging
- The Diagnostic Tool
- Workflow Analyzer
- About Workflow Analyzer
- ST-NMG-001 - Variables Naming Convention
- ST-NMG-002 - Arguments Naming Convention
- ST-NMG-004 - Display Name Duplication
- ST-NMG-005 - Variable Overrides Variable
- ST-NMG-006 - Variable Overrides Argument
- ST-NMG-008 - Variable Length Exceeded
- ST-NMG-009 - Prefix Datatable Variables
- ST-NMG-011 - Prefix Datatable Arguments
- ST-NMG-012 - Argument Default Values
- ST-NMG-016 - Argument Length Exceeded
- ST-NMG-017 - Class name matches default namespace
- ST-DBP-002 - High Arguments Count
- ST-DBP-003 - Empty Catch Block
- ST-DBP-007 - Multiple Flowchart Layers
- ST-DPB-010 - Multiple instances of [Workflow] or [Test Case]
- ST-DBP-020 - Undefined Output Properties
- ST-DBP-021 - Hardcoded Timeout
- ST-DBP-023 - Empty Workflow
- ST-DBP-024 - Persistence Activity Check
- ST-DBP-025 - Variables Serialization Prerequisite
- ST-DBP-026 - Delay Activity Usage
- ST-DBP-027 - Persistence Best Practice
- ST-DBP-028 - Arguments Serialization Prerequisite
- ST-USG-005 - Hardcoded Activity Arguments
- ST-USG-009 - Unused Variables
- ST-USG-010 - Unused Dependencies
- ST-USG-014 - Package Restrictions
- ST-USG-017 - Invalid parameter modifier
- ST-USG-020 - Minimum Log Messages
- ST-USG-024 - Unused Saved for Later
- ST-USG-025 - Saved Value Misuse
- ST-USG-026 - Activity Restrictions
- ST-USG-027 - Required Packages
- ST-USG-028 - Restrict Invoke File Templates
- ST-USG-032 - Required Tags
- ST-USG-034 - Automation Hub URL
- Variables
- Arguments
- Imported Namespaces
- Coded automations
- Introduction
- Registering custom services
- Before and After contexts
- Generating code
- Generating coded test case from manual test cases
- Trigger-based Attended Automation
- Trigger-based attended automation
- Overview
- Contact Centers and Trigger-based Attended Automation
- Creating a guided product tour
- Designing validation for existing apps
- Recording
- UI Elements
- Selectors
- Object Repository
- Data Scraping
- Image and Text Automation
- Citrix Technologies Automation
- RDP Automation
- VMware Horizon Automation
- Salesforce Automation
- SAP Automation
- macOS UI Automation
- The ScreenScrapeJavaSupport Tool
- The WebDriver Protocol
- Extensions
- About extensions
- SetupExtensions tool
- UiPathRemoteRuntime.exe is not running in the remote session
- UiPath Remote Runtime blocks Citrix session from being closed
- UiPath Remote Runtime causes memory leak
- UiPath.UIAutomation.Activities package and UiPath Remote Runtime versions mismatch
- The required UiPath extension is not installed on the remote machine
- Screen resolution settings
- Group Policies
- Cannot communicate with the browser
- Chrome extension is removed automatically
- The extension may have been corrupted
- Check if the extension for Chrome is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and Incognito mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- List of extensions for Chrome
- Chrome Extension on Mac
- Group Policies
- Cannot communicate with the browser
- Edge extension is removed automatically
- The extension may have been corrupted
- Check if the Extension for Microsoft Edge is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and InPrivate mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- List of extensions for Edge
- Extension for Safari
- Extension for VMware Horizon
- Extension for Amazon WorkSpaces
- SAP Solution Manager plugin
- Excel Add-in
- Studio testing
- Troubleshooting
- About troubleshooting
- Assembly compilation errors
- Microsoft App-V support and limitations
- Internet Explorer X64 troubleshooting
- Microsoft Office issues
- Identifying UI elements in PDF with Accessibility options
- Repairing Active Accessibility support
- Validation of large Windows-legacy projects takes longer than expected

Studio User Guide
Contact Centers and Trigger-based Attended Automation
linkThis tutorial demonstrates how to work with multiple instances of the same form, at the same time. The scenario presented involves a contact center agent that operates with multiple customer phone calls coming in at the same time. In this scenario, forms and triggers help in displaying information about the customer the contact center agent is currently talking to, while being able to perform different actions for a customer, such as: change their account password, update their licensing plan, or delay their payment.
This automation process streamlines the customer service experience by monitoring incoming calls and providing contact center agents with all the necessary information about the customer. The process retrieves customer data from a Data Service entity and displays it in a form, which remains open after the call ends so that agents can revisit it and perform additional actions. The process also prioritizes customers who have been put on hold for more than 25 seconds, displaying a form that prompts agents to either switch to that customer or ignore their call. By enabling agents to handle multiple calls simultaneously, this process optimizes efficiency and enhances the overall quality of customer service.
Prerequisites
- Install Form.Activities 23.4.3
- Install System.Activities 23.4.2
- Install UIAutomation.Activities 23.4.5
Sample app
linkIf you want to try out this tutorial with the same contact center agent application, you can download the sample app here.
Sample workflows
linkTo follow the steps and test out the idea yourself, download the sample project here.
Workflow | Tutorial |
---|---|
Main.xaml (entry point) | Step 1: Create the Main workflow |
Customer Data.uiform | Step 2: Create customer data form |
on incoming call.xaml | Step 3: Create workflow for incoming call |
on current call.xaml | Step 4: Create workflow for current call |
on ignore click.xaml | Step 5: Create workflow to ignore customer call |
on resume click.xaml | Step 6: Create workflow to resume customer call |
Too long to hold.uiform | Step 7: Create form when customer is on hold for too long |
check on hold times.xaml | Step 8: Create workflow to check Hold time |
on ignore clicked.xaml | Step 9: Create workflow for ignoring call on hold |
on switch cliked.xaml | Step 10: Create workflow for switching to call on hold |
Step 1: Create the Main workflow
linkThis workflow represents the project’s entry point, and the workflow that starts all triggers.
-
Add a Build Data Table activity, and build a table with the following
columns:
-
Caller (
String
) – to store the customers phone numbers. -
Since (
DateTime
) – to store the time when you answer a customer call. -
Ignore (
Boolean
) - to record if the customer call was ignored.
-
Caller (
-
Store the Data Table inside a global variable named
callers
- Add a Run Local Triggers activity, to start all the triggers inside the project at the same time.
Step 2: Create customer data form
linkCreate a form to fetch and display information about the customer that’s calling or the customer the contact center agent is talking to (Customer Data)
- Create a new Form file from the Studio design ribbon. Name it Customer Data.
-
Add three Label/Header components that hold the name, Id, and payment
status of the customer that is calling. Edit them as follows:
-
First Label/Header - Type Loading… in the Content
field and set the property name as
customerName
, in the Property Name field. -
Second Label/Header - Type Caller ID: in the
Content field. Set the property name as
callerId
, in the Property Name field. -
Third Label/Header – Type Payment Status: Loading… in the
Content field and set the property name as
paymentStatus
.
-
First Label/Header - Type Loading… in the Content
field and set the property name as
-
Add six Button components, that trigger certain action events. For this
example, create buttons for the following action events (using the Action
dropdown):
- Change password
- Reset 5G
- Service request
- Update plan
- Address Change
- Delay payment
Step 3: Create workflow for incoming call
link-
Add an Application Event Trigger for the incoming call app event.
- Event type – Appeared
- Scheduling mode – Sequential
-
Add a Use Application/Browser activity to focus on the Contact Center
agent app and fetch information about the customer.
-
Add a Get Text activity and indicate the phone number. Save it
to a global variable named
incomingCaller
. -
Add a Show Form activity to display the Customer Data
form using the information that you previously fetched. Set the
Instance Name as
incomingCaller
. In the Arguments collection, pass in the customer’s phone number:
-
Add a Get Text activity and indicate the phone number. Save it
to a global variable named
-
For this example, query additional client data from a Data Service entity. Save
the queried data inside a local variable named
clientData
.
-
Add a Set Form Values activity, to add the previously fetched client
data to the same Customer Data form instance. For this example, pass
arguments for name, invoice number, and payment status.
-
To personalize the form instance, change its title based on the queried client
data, at runtime, by adding a Change Form Properties activity.
- Select Form – Customer Data
-
Title –
clientData.FullName
Step 4: Create workflow for current call
linkThis workflow represents the scenario when you answer a customer call and you’re currently talking to them (on current call.xaml).
-
Add an Application Event Trigger activity for the current call event.
- Event type – Appeared
- Scheduling mode – Concurrent
-
Add a Use Application/Browser activity to focus on the Contact Center agent app
and fetch information about the customer.
-
Add a Get Text activity and indicate the phone number. Save it to a global
variable named
caller
. -
Add the customer that is currently on call to the
callers
global variable, where the Data table from the Main workflow is stored.
-
Add a Bring Form to Foreground activity to bring the Customer Data
form to the front, so you can focus on the customer that you’re talking to. Add a
global variable named
caller
as the Instance Name of the form.
-
Add a Get Text activity and indicate the phone number. Save it to a global
variable named
Step 5: Create workflow to ignore customer call
link-
Add a Click Trigger activity for the Ignore button.
- Mouse button – Left
- Trigger mode – Down
- Scheduling mode – Concurrent
- Add a Close Form activity, to close the customer form assigned to the customer, whose call you ignored.
Step 6: Create workflow to resume customer call
link-
Add a Click Trigger activity, for the Resume button.
- Mouse button – Left
- Trigger mode – Down
- Scheduling mode – Concurrent
-
Add a Use Application/Browser activity, activity to focus on the Contact Center
agent app and fetch information about the customer that you resumed the call for.
- Add a Get Text activity, to fetch the phone number.
-
Add a Bring Form to Foreground activity to bring back to front the assigned
Customer Data form. Set as the Instance Name the
caller
global variable.
Step 7: Create form when customer is on hold for too long
link-
Create a new Form file from the Studio design ribbon. Name it Too long to
hold.
The Form Builder opens in the Designer panel.
-
Add a Label/Header component to display a message for when a customer stays on
hold for too long. Set the Property Name to
message
. -
Add two Button components to allow the contact center agent to switch to the
customer that was held too much on hold, or ignore the customer call.
- First Button – set the Label as Switch, and the Action to event.
- Second Button – set the Label as Ignore, and the Action to event.
-
Add a Hidden component, and set the Property Name to
caller
. That’s where we’ll show the phone number of the customer that stayed on hold for too long.
Step 8: Create workflow to check Hold time
link- Add a Repeat Trigger activity to constantly check the time customers are on hold. For this example, set the Interval to 5 seconds.
-
Search for the time a customer was on hold in the
caller
global variable, that you usedto store data about the customer. For this example, if a customer was on hold for more than 25 seconds, then the Too long on hold form appears.
Step 9: Create workflow for ignoring call on hold
link-
Add a Form Event Trigger activity, to trigger other activities when the
Ignore button is clicked.
- Select Form – Too long to hold.
- Event – Ignore clicked.
-
Add a Get Form Values activity, to fetch the phone number of the
customer that stayed too long on hold.
-
Add the phone number of the customer that you fetched at step 2, in the
callers
data table.
- Add a Close Form activity to close the Too long on hold form after the Ignore button is clicked.
Step 10: Create workflow for switching to call on hold
link-
Add a Form Event Trigger activity, to trigger other activities when the
Switch button is clicked.
- Select Form – Too long on hold
- Event – Switch clicked
- Add a Get Form Values activity, to fetch the phone number of the customer that stayed too long on hold.
-
Add a Close Form activity, to close the Too long on hold
form.
-
Add a Use Application/Browser activity to focus on the contact center
agent app and resume the call with the customer from the Too long on hold
form.
-
Add an If activity that:
- Clicks Resume in the contact center agent app if the customer on hold is available in the contact center agent app, using a Click activity.
- Selects the phone number of the customer you want to switch to, using a Select Item activity.
-
Add an If activity that:
Result
link- Display forms on all customers that are calling the contact center at the same time.
- Display actionable forms. For example, these could allow the contact center agent to delay a payment or change the address for a specific customer.
- Display forms based on the customer that's currently on call. This involves bringing to front the form on that specific customer.
- Keep displaying form files, even if the customers hung up. This prevents the loss of any customer data.
- Sample app
- Sample workflows
- Step 1: Create the Main workflow
- Step 2: Create customer data form
- Step 3: Create workflow for incoming call
- Step 4: Create workflow for current call
- Step 5: Create workflow to ignore customer call
- Step 6: Create workflow to resume customer call
- Step 7: Create form when customer is on hold for too long
- Step 8: Create workflow to check Hold time
- Step 9: Create workflow for ignoring call on hold
- Step 10: Create workflow for switching to call on hold
- Result