Composer Help - Genesys Documentation

Composer Help
Composer 8.1.4
2/7/2018
Table of Contents
Welcome
13
Composer Overview
16
Getting Help
19
Composer Installation Video
20
Composer Quick Start
21
Eclipse Workbench
35
Introduction to Composer
36
Software Prerequisites
39
Interface Overview
40
Using the Interface
45
Connection Links
47
Composer Code Editors
49
Enabling/Disabling Functionality
51
Hiding File Types and Blocks
52
Minimizing and Restoring Views
54
Localization
56
Composer Compared to IRD
58
Getting Started with Composer
63
Running Composer for the First Time
64
Software Updates Functionality (Plugins)
66
Integrating with Source Control
68
Project Types and Directories
75
Project Properties
85
Multiple User Environments
104
Security Configuration
105
Upgrading Projects and Diagrams
106
Working with Diagram Layouts
114
Accessing the Editors and Templates
116
Keyboard Shortcuts
119
Default Logging
121
IRD Functionality Included in Composer
122
Composer Menus
126
File Menu
127
Edit Menu
129
Diagram Menu
130
Navigate Menu
133
Search Menu
134
Project Menu
135
Run Menu
136
Configuration Server Menu
138
Window Menu
139
Help Menu
141
Canvas Shortcut Menu
142
Palette Group Menu
144
Composer Toolbars and Views
145
Toolbars Overview
146
Main Toolbar
147
View Toolbars
153
Perspective Switcher Toolbar
165
Trimstack Toolar
167
Debugging Toolbars
168
Voice Applications and Callflows
175
Getting Started with Voice Applications
176
Callflow Post Installation
177
Working with Java Composer Projects
181
Working with .NET Composer Projects
182
Preferences for Voice Applications
184
CCXML File Preferences
185
Diagram Preferences
187
GAX Server Preferences
191
GRXML File Preferences
192
VXML File Preferences
194
GVP Debugger Preferences
196
IIS.NET Preferences
197
Setting Context Services Preferences
198
Time Zone Preferences
202
Tomcat Preferences
203
XML Preferences
204
Creating Voice Apps for GVP
205
What is GVP and How Do Voice Apps Work
206
Creating CCXML Applications
209
Creating VXML Applications
210
Hello World Sample
216
Callflow Blocks
219
Variables in Callflows
220
VXML Properties
224
Voice Block Palette Reference
240
Voice Blocks Basic
242
Assign Common Block
244
Branching Common Block
248
Disconnect Block
251
End FCR Block
253
Entry Block and Variables
255
Exit Block
264
GoTo Block
266
Grammar Menu Block
270
Input Block
277
Log Common Block
288
Looping Common Block
290
Menu Block
295
Prompt Block
304
Raise Event Block
308
Record Block
310
Release ASR Engine Block
317
Script Block
319
Set Language Block
321
SNMP Block
323
Start FCR Block
325
Subdialog Block
328
Transfer Block
334
VXML Form Block
344
Voice Database Blocks
346
DB Data Block
348
Database Input Block
349
DB Prompt Block
355
Working with Database Blocks
358
Supported SQL Datatypes
371
Voice CTI Blocks
373
CTI Scenarios
374
Get Access Number
377
Interaction Data Block
380
Route Request Block
383
Statistics Block
391
ICM Interaction Data Block
396
ICM Route Request Block
399
Working with CTI Applications
407
Voice External Message Blocks
413
Receive Block
414
Send Data Block
416
Send Event Block
419
Send Info Block
421
Reporting Blocks
423
Action Start Block
424
Action End Block
427
Set Call Data Block
430
Set Call Result Block
432
Genesys Voice Platform (GVP) Blocks
IVR Recording Block
Using Voice Blocks
435
436
439
Working with Grammar Builder
440
Working with CTI Applications
407
Working with Prompts
452
Connection Pooling
463
Common Properties for Callflow Blocks
469
Routing Applications and Workflows
481
Routing FAQs
482
Getting Started with Route Applications
491
IRD Functionality Included in Composer
122
Workflow Post Installation
496
Upgrading Workflows
500
Preferences for Routing Applications
501
Business Rule Preferences
502
Configuration Server Preferences
503
Diagram Preferences
187
Setting Context Services Preferences
198
Customizer Preferences
512
ORS Debugger Preferences
513
GAX Server Preferences
191
Help Preferences
515
IIS.NET Preferences
197
Orchestration Preferences
517
Orchestration Options
518
Orchestration Extensions
521
Detaching Interactions
522
SCXML File Preferences
526
Security Preferences
528
Tomcat Preferences
203
Introduction to Routing Workflows
530
What is a Routing Workflow?
531
Architecture Diagram for Workflows
533
Workflow Example and Palette
535
SCXML File Editor
536
Sessions and Interactions
538
Interaction Process Diagrams
539
Creating Routing Applications
542
IPD Planning
543
Starting SCXML Page
545
Creating a New Project
546
Creating the IPD
548
Creating a New Workflow Diagram
552
Using the SCXML Editor
553
Using SCXML Templates
554
Your First Application: Routing Based on DNIS or ANI
555
Using URS and ORS Functions
564
Routing Block Palette Reference
567
Interaction Process Diagram Blocks
569
IPD Differences Voice and Multimedia
570
Starting a New IPD
571
Interaction Queue Block
579
Adding an Interaction Queue
583
Interaction Queue Views
584
Media Server Block
592
Workflow Block
596
Workbin Block
600
Flow Control Blocks
604
Workflow Generated Blocks
605
Linking IPDs with Workflows
608
Publishing Updates
609
Route Flow Control Blocks
615
Assign Common Block
617
Attach Block
621
Begin Parallel Block
623
Branching Common Block
626
Cancel Event Block
629
Detach Block
631
Disconnect Block Routing
633
ECMAScript Block
635
End Parallel Block
640
Entry Block and Variables
642
Exit Block Routing
649
Response Block
652
Log Common Block
656
Looping Common Block
658
Raise Event Block
663
SCXML State Block
666
Subroutine Block
675
User Data Block
680
Wait Event Block
685
Routing Blocks
687
Cancel Block
688
Default Routing Block
690
Force Route Block
693
Queue Interaction Block
698
Query Block
702
Route Interaction Block
705
Routing Rule Block
717
Set Ideal Agent Block
721
Single Step Transfer Block
724
Stop Interaction Block
727
Target Block
732
Update Block
747
Percent and Conditional Routing
749
Voice Treatment Blocks
751
Composer Equivalent to IRD Treatment
753
Cancel Call Block
756
Create User Announcement Block
758
Delete User Announcement Block
763
IVR Block
765
Pause Block
769
Play Application Block
771
Play Sound Block
777
Play Message Block
781
Set Default Route
785
User Input Block
787
Single Session Treatments
796
eServices Blocks
802
Composer Equivalent to IRD Multimedia
805
Analyze Block
808
Chat Transcript Block
817
Classify Interaction Block
822
Create E-mail Block
827
Create Interaction Block
832
Create SMS Block
836
Email Forward Block
840
Email Response Block
846
Find Interactions Block
852
Identify Contact Block
855
Render Message Block
859
Screen Interaction Block
863
Send Email Block
868
Send SMS Block
872
Set Agent State Block
875
Update Contact Block
883
Update Interaction Block
886
Update UCS Record
889
Using eServices Blocks
894
Handling eServices Switchovers
900
How To: Automate an SMS Response to a Customer Call
902
Common Properties for Workflow Blocks
912
Social Media Blocks
928
Twitter Block
931
Facebook Block
936
Other Workflow Functionality
942
Variables Project and Workflow
943
User Data
951
Custom Events
954
Skill Expression Builder
955
List Objects Manager
961
Statistics Manager and Builder
965
Orchestration Extensions
521
Service Level Routing
969
Exception Events
972
Working with URS Functions
982
Working with URS API Calls
983
Common Voice
984
Code Generation
985
Custom Blocks
986
Customization Manager
989
Diagram Preferences
187
Exception Events
972
Expression Builder
1006
GAX Server Preferences
1017
Getting Using Email Addresses
1018
Import and Export
1022
Link Tool
1025
Locales
1026
Time Zone Preferences
202
Using User Data
1036
Variables Mapping
1039
Common Blocks
1040
Context Services Common Blocks
1042
Context Services 8.5 Support
1044
Context Services and Composer
1045
Associate Service Block
1047
Complete Service Block
1051
Complete State Block
1054
Create Customer Block
1057
Complete Task Block
1060
Enter State Block
1063
Identify Customer Block
1067
Query Customer Block
1071
Query Services Block
1074
Query States Block
1079
Query Tasks Block
1083
Start Service Block
1086
Start Task Block
1090
Update Customer Block
1094
Using Context Services Blocks
1097
Common Properties Context Services
1098
Online and Offline Modes
1104
Runtime Configuration
1105
Context Services Exception Events
1108
Outbound Common Blocks
1109
Add Record Block
1110
Cancel Record Block
1116
Do Not Call Block
1119
Record Processed Block
1122
Reschedule Record Block
1125
Update Record Block
1128
Server-Side Common Blocks
1131
Backend Common Block
1134
Business Rule Common Block
1138
DB Data Common Block
1149
External Service Block
1154
NDM Block
1159
HTTP Rest Block
1163
OPM Common Block
1171
TLib Block
1174
URS Function Block
1175
Web Request Common Block
1181
Web Service Common Block
1188
Web Service Stubbing
1202
Web Service SOAP Messages
1204
Signed SOAP Requests
1206
Connection and Read Timeout
1208
Server-Side Troubleshooting
1209
Sample Applications and Templates
1211
Project Templates
1212
Diagram Templates
1213
GVP Voice Project Templates
1215
Application Metrics Collection Project Template
1226
Integrated Voice Route Project Templates
1234
Routing Templates and Samples
1241
Context Services Template
1243
Database Query Result Template
1247
Forward to External Resource Template
1248
Route After Autoresponse Template
1250
Routing Based on Variables Template
1253
Routing Based on Date and Time Sample
1255
Routing Based on a Statistic Sample
1259
Routing Based on Percent Allocation
1262
Routing Using Web Request Sample
1265
Last Called Agent Routing
1268
Validation, Debugging, and Deployment
1277
Validation
1278
Debugging Routing Applications
1281
Debugging Voice Applications
1293
Deploying Composer Applications
1309
Best Practices
1321
Troubleshooting
1323
General Troubleshooting
1325
Block Names
1326
Bundled Help contents are always in English
1327
Chat Messages in Queues
1328
Checkin Error During Source Code Integration
1330
Composer Project Not Deployed on Tomcat
1331
Composer Project Not Currently Deployed
1332
Connection Profile and ASCII Characters
1333
Chinese Characters Do Not Display
1334
Connection to a Database Fails
1335
Context Services URL Message
1337
CTI Block Issues
1338
Debugging Failure
1339
Deployment Failure on IIS
1340
DOTNet (.NET) Project Issues
1341
Failed to Deploy Message
1343
Installation and Uninstallation
1344
JSON objects and JavaScript keywords
1345
ORS Compile Errors
1346
Plugin Installation
1347
Proxy Configurations .NET Composer Projects
1348
Request Form Error Message
1349
SCXML Editor Element Not Bound Message
1350
Server-Side Troubleshooting
1209
Slow Response Time
1353
Stored Procedure Helper and DB Data Block
1354
Tomcat Service Failed to Start
1355
Test Calls Do Not Work
1356
Upgrade Errors and Error Messages
1358
Validation Error upon publishing IPD
1360
Web Service Block Issues
1361
Workflow Does Not Compile
1368
Workspace in Use or Cannot be Created
1369
Workspace Files Not in Sync
1370
Links to Useful Resources
1371
Composer Product Videos
1373
HTTP Rest Block
1163
Welcome
Welcome
Welcome to the Composer 8.1.4 Help. Composer is an Integrated Development Environment (IDE), based on
Eclipse, for developing:
• Routing applications for the Genesys Orchestration Platform 8.x (ORS)—which takes the Genesys core capability of
routing, extends it, and integrates it tightly with other Genesys products.
• Voice applications for Genesys Voice Platform (GVP) 8.1+—a software suite, which unifies voice and web
technologies to provide a complete solution for customer self-service or assisted service.
Expand the Table of Contents on the left to view all topics. Use the links below to get started in functional areas.
Tip
You can also click Search at the top right. To search all Genesys docs, or just Composer, position
the cursor immediately after the magnifying glass and press Enter. A search page appears.
Composer is under On-Premise Content.
Note: This document is valid for the 8.1.440 release(s) of Composer.
Quick Start
See the Composer Videos, specifically the video on Getting Started After Installation.
• Use the information below Quick Start to learn how to create a simple routing strategy, attach data that will appear on
the agent desktop, and route to the preferred agent.
Videos
Don't miss the Composer videos. Since Orchestration Server executes the SCXML-based routing strategies
created in Composer, you might also be interested in the Orchestration Video.
Composer Help
13
Welcome
Introduction to Composer
Validation, Debugging & Deployment
This section includes the following information:
This section includes information on:
Quick Start
Validation
Introduction to Composer
Debugging Routing Applications
Interface Overview
Debugging Voice Applications
Samples and Templates
Testing on Tomcat
Getting Started with Composer
Deploying Composer Applications
GVP Voice Applications
Sample Applications & Templates
This section includes information on:
This section includes information on:
Creating Voice Applications
Routing Templates and Samples
Sample Text-to-Speech Application
Project Templates
Preferences for Voice Applications
Diagram Templates
How Do Voice Applications Work?
GVP Voice Project Templates
Voice Block Palette Reference
Last Called Agent Routing
Orchestration Routing Applications
Installation, Videos, Troubleshooting
This section includes information on:
This section includes information on:
Creating Routing Applications
Installation Video
Sample DNIS Routing Application
Installation/Deployment Guide
Preferences for Routing Applications
Troubleshooting
Interaction Process Diagrams
Best Practices
Routing Block Palette Reference
Useful Resources
Composer Help
14
Welcome
Common Voice & Route Functionality
Links to Useful Docs
This section includes information on:
This section includes information on:
Code Generation
Orchestration Server Wiki
Exception Events
Orchestration Server Extensions
Diagram Preferences
SCXML Language Reference
Defining Variables
Genesys Voice Platform Wiki
Expression Builder
System-Level Guides
Composer Help
15
Welcome
Composer Overview
Use to Create Routing and Voice Applications
Composer is an Integrated Development Environment (IDE), based on Eclipse, for developing:
Routing applications for the Genesys Orchestration Platform 8.x, which includes:
• Universal Routing Server (URS)—which enables intelligent distribution of voice and multimedia interactions throughout
the enterprise.
• Orchestration Server (ORS)—an open standards-based platform with an SCXML engine, which enables the customer
service process. ORS is responsible for executing orchestration logic (SCXML) that is provided by an application
server (such as an application server hosting an SCXML-based routing application created in Composer). The
responsibility of URS within the Orchestration Platform is to provide a necessary service to Orchestration Server to
support Routing functions.
Voice applications for Genesys Voice Platform (GVP) 8.1+—a software suite, which unifies voice and web
technologies to provide a complete solution for customer self-service or assisted service.
Tip
• In the past, Interaction Routing Designer was used to create routing applications. Genesys
Composer is now the tool of choice for creating both routing and voice self-service applications.
• Previously Composer was known as "Composer Voice," as it was used only to develop voice
applications for Genesys Voice Platform. Starting with 8.0.2, the capabilities of the IDE were
expanded to include support for Universal Routing application development. Due to this expansion in
scope, the product name was shorted to "Composer."
• The terms Composer Voice and Composer Route are used in some places in the product, to refer to
the collection of product features that are used specifically for Genesys Voice Platform application
development, and Universal Routing Application development, respectively.
• Users may enable/disable Composer Voice and/or Composer Route capabilities through a Composer
preference setting (Window > Preferences > General > Capabilities > Advanced). This is useful for
developers who are only using one of these Genesys platforms.
Application Development
Composer provides both drag-and-drop graphical development of voice applications (or “callflows”) and routing
strategies (or “workflows”) as well as syntax-directed editing of these applications.
Composer Help
16
Welcome
• For voice applications for the Genesys Voice Platform, Composer supports editing of VoiceXML 2.1, CCXML1.0 and
SRGS 1.0.
• For routing applications for the Genesys Orchestration Platform, Composer supports editing of SCXML 1.0.
Applications may be developed in an "offline” mode, without requiring the user to connect to Genesys Configuration
Server.
Application Debugging
Composer provides real-time debugging capabilities for both voice and routing applications.
• The Genesys Voice Platform Debugger is integrated with GVP for making test calls, viewing call traces, and debugging
applications. It supports accessing SOAP and REST-based Web Services. Database access is possible using serverside logic and a Web Services interface.
• The Orchestration Server Debugger, integrated within the workflow editor, works with both live and simulated calls.
For live calls, it places those calls into a T-Server/SIP Server connected to a URS/ORS system. The capabilities
include setting breakpoints, stepping through a workflow, viewing and setting the values of variables, and viewing
event messages from the URS/ORS platform.
Eclipse
Composer is an Eclipse-based application. The use of Eclipse as the underlying framework enables the use of third
party IDE plug-ins, supporting integration with third party source code control systems, server-side development
enhancements, and side-by-side development of any business logic required to support your applications.
Operating Systems
For information on supported operating systems, see the Genesys Supported Operating Environment Reference
Guide.
Composer Help Wiki URL
The URL to the Composer Help wiki is configurable by using the Online Wiki URL field: Window > Preferences >
Help. The default works with English but if, for example, Japanese pages were available in a different location, then
you could change the URL accordingly.
Composer Help
17
Welcome
Third Party Software
For information on the third party software used in Composer, see the Legal Notices under More Release
Information at the bottom of the Composer main page.
Composer Help
18
Welcome
Getting Help
• Use the Search This Manual (or Product) box at the top right. You can search by product, book type, version, and book
type.
• Create a searchable PDF. Scroll down to PDF version at the bottom left of a page.
• Use the TOC on the left of each page to locate information.
• Depending on your location in the user interface, Composer's context sensitive help triggers wiki pages.
• Press F1 to get help on a page. A Help view opens on the right.
Block Palette Reference
For information on Composer blocks and block properties, you can go directly to the following:
• Voice Block Palette Reference (when building applications for Genesys Voice Platform (GVP))
• Interaction Process Diagram Block Palette Reference (used for multimedia/routing applications to define how
interactions move through various processing objects)
• Routing Block Palette Reference (when building routing applications for the Orchestration Platform)
• Common Blocks Block Palette Reference (blocks used for both voice and routing applications)
Composer Help
19
Welcome
Composer Installation Video
Video Tutorial
Below is a video tutorial on installing Composer 8.1.4 on Windows in an Eclipse environment.
For additional installation information, see Installation in the Composer 8.1.4 Deployment Guide.
Composer Help
20
Welcome
Composer Quick Start
Tip
See Getting Started After Installation the Composer Videos.
The information below is intended to be a Quick Start for routing strategy development with Genesys Composer. A
routing strategy is comprised of one or more routing workflows. Regardless of the version of Composer you have
installed, this Quick Start (which reflects the Composer 8.1.2 interface) will help you get started using Composer.
The goal of this Quick Start is to:
1. Create a simple routing strategy workflow that will distribute an inbound call to an agent.
2. Add attached data to this workflow that will be popped when the call is delivered to the agent desktop.
3. Route the call to a preferred agent and if the agent is not available then expand the agent pool.
The steps below assume you have already installed a Genesys environment and have configured an Orchestration
Solution, which includes Workspace Desktop Edition, Interaction Server, Composer, and Orchestration Server.
Creating a Sample Workflow
1. In Workspace Desktop Edition (or "Interaction Workspace"), log in and make agents Ready). This example uses 04
Agent KSippo, and 05 Agent KMilburn. Also make Ready the customer phone. This example uses the Pat
Thompson customer phone.
2. Click the Eclipse icon on your desktop to open Genesys Composer.
3. Ensure that Genesys Composer is connected to Configuration Server. The current status of the connection to
Configuration Server is displayed in the lower right of Composer.
Tip
When you set up your Configuration Database (Configuration Server), you define certain database objects, such as agents
(Persons), Agent Groups, Skills, and so on. These objects can be defined in Configuration Manager or in Genesys
Administrator. When you use Composer to create SCXML-based routing strategies executed by Orchestration Server (and
Universal Routing Server), there is a button to connect to Configuration Server. When creating a routing workflow in
Composer, those Configuration Database objects will be available in the Composer workflow building blocks that use them.
For example, you might be creating a workflow that routes to an Agent Group and using Composer’s Target block. The Agent
Group you defined in the Configuration Database would be available for selection in the Target block.
4. If Composer indicates Disconnected from Configuration Server, then select Configuration Server from the
main toolbar and click Connect.
Composer Help
21
Welcome
5. Enter the appropriate connection information and click Next.
6. Select the tenant, such as Environment, or the name of another tenant (business entity).
7. Within Composer, create a new Project: File > New > Java Composer Project.
8. Give the Project a name, for example, MySample.
9. Ensure that Integrated Voice and Route is selected.
10. Click Finish.
11. Go to the new Project folder that you was just created (MySample) and open the Main workflow and default
workflow.
Upon selecting the default.workflow a blank workflow palette will appear.
12. Within the .workflow, drag and drop an Entry block, Target block, and Exit block from the palette of blocks onto the
workspace. Make sure you are working within .workflow and not the .callflow (used for GVP voice self-service
applications).
13. Go to the Target block and select the Targets property. This is done by selecting: Target > Properties > Target
Selection > Targets on the far right. Upon selecting the Targets property, a new Targets box will appear:
14. Within the Target block, select Add and enter the following:
• Type: Agent Group
• Name: SIP Group
• Stat Server: Stat_Server
Composer Help
22
Welcome
Tip
If you are connected to Configuration Server, you are able to directly pull information from Configuration Server to populate
the options. You are not required to be connected to Configuration Server to perform development as Composer allows you
to perform development offline and then connect and validate against Configuration Server at a later time.
15. In the Target block set the Timeout property to 99.
16. Click the main toolbar buttons to validate your workflow and then generate the code.
Tip
To validate the workflow and generate the code, the focus must be within the palette where the workflow is being designed.
To validate you can enter Alt+V. Or you can validate by right clicking the default.workflow from the Project Explorer
window and selecting Validate from the main toolbar. Code can be generated by entering Alt+G or clicking on the Generate
button on the main toolbar.
17. Go to the Interaction Processes folder in the left Project Explorer. Right-click on the interaction process diagram file
(default.ixnprocess) and perform a similar process to validate and generate the code validate the default
interaction process diagram.
18. Right-click on the interaction process diagram file (default.ixnprocess) and select Publish to Configuration
Server. You should receive a message that the interaction process diagram was validated and published to
Configuration Server.
Tip
An SCXML-based workflow is first invoked by the interaction process diagram. If you open the interaction process folder, you
will see that there is a workflow named defaultworkflow. This workflow in turn points to the actual workflow that you just
created, which is in the Location/Resource property of the Workflow block. If you change the name or have multiple
workflows, you need to ensure that the appropriate association is maintained.
19. Assuming this routing strategy only contains one workflow, you are now ready to "provision" the new workflow. Within
Genesys Administrator, provision a new DN on the SIP_Switch
Composer Help
23
Welcome
Example: Number: 4000 Type: Routing Point
20. Under Routing > Orchestration (see below), select the workflow that was just created:
MySample.default.defaultWorkflow.
Composer Help
24
Welcome
21. Confirm that your routing strategy works:
• Make your agents Not Ready.
• Place a call from the customer phone to 4000. Note: We do not yet have a treatment so the caller will not hear any
initial treatment.
• Make KSippola Ready.
Composer Help
25
Welcome
• Confirm that the call is delivered to the available agent and they receive a screen pop.
Add a Treatment
Add a simple queue treatment that the caller will hear while waiting for an available agent.
1. Utilizing the existing workflow, select the Target block. In the properties under Route Target, set Use Treatments
to true.
2. Add a Play Sound block from the Voice Treatment icons palette. Connect the Busy Treatments from the Target
block to the Play Sound block. Connect the output from the Play Sound block to look back to the Target block.
Composer Help
26
Welcome
3. Within the Play Sound block set the Resource property to play back the badon_hold.wav file, which is already
present on the Demo Server.
4. Proceed to validate the code, generate the code, and then place a call back into to your Routing Point with all
agents in a Not Ready state. Confirm that queue music is received by the caller.
Attaching Data
Add attached data to this strategy that will be popped when the call is delivered to the agent desktop. In this example you will need to add your
name as a value for one of the appropriate keys and ensure that it is popped to the Interaction Workspace desktop.
1. Utilizing the existing workflow that was just created add a User Data block from the palette in between the Entry
and Target blocks.
Composer Help
27
Welcome
2. In the Assign property of the User Data block configure an appropriate key and value where the value is your
name; for example, Don Huovinen.
While we are attaching data using this block you must also ensure that the new key; NewKVP in the example
shown above, will appear properly in Interaction Workspace.
3. Validate your workflow and then generate the code.
4. Modify the settings of Interaction Workspace to display the key-value pair ,which we just added, in our case the
key is ”NewKVP” and we want this displayed in Workspace as ”My Complete Name”. Within Interaction
Composer Help
28
Welcome
Workspace, the key-value pairs that will be displayed are based on the keys that are listed in the CaseData
Business Attribute so we need to add ”NewKVP” as one of the values in the CaseData business attribute for this
KVP to be properly displayed in Interaction Workspace. This can be done by searching for the Case Data
business attribute.
5. Then double-click on Case Data, select the Attribute Values tab, and then select to Add a new attribute. The
Name will be the name of the key (NewKVP) and the Display Name is the name we want displayed in Interaction
Workspace.
Composer Help
29
Welcome
6. Make your agents Not Ready.
7. Place a call from the customer phone to 4000. The caller should hear music.
8. Make the agent Ready.
9. Confirm that the call is delivered to the available agent and they receive a screen pop.
Composer Help
30
Welcome
Routing to a Preferred Agent (Add Flexibility)
Provide routing to a preferred (last handling) agent and if that agent is not available within the defined threshold expand the pool of available agents
so that the call can be successfully delivered.
1. Using the existing routing workflow, add a new Target block from the palette in between the UserData block and
existing Target blocks.
2. Within the new Target block label it ”Personal_Agent” and set the Target block to target KSippola.
• Type: Agent
• Name: KSippola
• StatServer: Stat_Server
Composer Help
31
Welcome
3. Set the Timeout property of the block to 15.
4. Set the Exceptions property to capture an exception of error.queue.submit
5. Within the workspace, connect the error.queue.submit exception from the new Target block you just added to
the previous SIP group target block that you already have. Connect the normal outlink from this new Target block
to the existing Exit block. A example flow is provided below.
Composer Help
32
Welcome
6. Validate your workflow and then generate the code.
7. Test that your routing and logic works as desired:
8. Make KSippola and KMilburn ready.
9. Place a call from the customer phone to 4000.
10. Confirm that the call is delivered to KSippola and he receives a screen pop.
11. Make KSippola NotReady
12. Place a call from the customer phone to 4000.
13. Confirm that the caller waits and after the timeout the set of targeted agents has been expanded the call is
delivered to KMilburn. Note: The prior example is a scenario that shows target expansion, but can be improved
if another different treatment is provided while the caller is waiting for their personal agent. As the target
expansion occurs, you could also change the treatment to provide an audible queue position. An example is
callflow is shown below.
Composer Help
33
Welcome
14. Validate your workflow, Generate the code and then proceed to place a call to show the new scenario:
15. Make KSippola Not Ready and KMilburn Ready.
16. Place a call from the customer phone to 4000.
17. Confirm that the caller waits and after the timeout the set of targeted agents has been expanded the call is
delivered to KMilburn.
Summary of Example Workflow
• This example workflow strategy could represent a "last agent routing" approach or preferred/personal agent
routing. If the preferred destination is not available, you could expand the target list so that you have 1) optimal
routing and 2) do so within the context of desired service levels. As the target group is expanded, you not just
moving from A to B when expanded. The workflow is now looking at the A + B. You coulde alternatively just
overflow to B if desired through the Target Selection properly (Clear Targets = True).
• You could also place a subsequent call, wait until the timeout and then make KSippola available showing that
KSippola is still part of the target group and will receive the call. Technically KSippola is a subset of SIP
agents therefore you really don’t have the A+B as described previously as A is a member of B but the A+B target
expansion discussed previously is still valid.
• When attaching User Data. you can utilize any key name you want. However. you need to make the necessary
changes in Interaction Workspace to display the desired attached data. The workspace will utilize attached data
present in the call such as the caller ID to look up information from Universal Contact Server and use the
information obtained from UCS for the screen pop in Contact area.
• Interaction Workspace may take a long time to start. This is becasue the Interaction Workspace agents are
configured for a number of interaction channels such as e-mail, SMS, chat, and so on. Therefore, when
Workspace starts, it attempts to connect to Interaction Server. If Interaction Server is unavailable, then each
channel will be attempted sequentially and need to time out before proceeding to the subsequent channel.
Composer Help
34
Welcome
Eclipse Workbench
• As described in the Composer Deployment Guide, Composer 8.1.4 is installed as an Eclipse plugin.
Since Composer is based on based on Eclipse, you may wish to familiarize yourself with basic Eclipse concepts by
referring to the Workbench User Guide although this is not mandatory. The Workbench User Guide presents an
overview of many of the same concepts used within Composer, but from the Eclipse development environment
framework perspective. Reviewing this information can be valuable as a first step in getting familiar with the Eclipse
user interface on which Composer is based. To access the Workbench User Guide online help:
1. Select Help > Help Contents. The system displays the Help - Composer window.
2. In the Contents navigation pane, click Workbench User Guide.
3. Click Concepts in the main Help pane.
Review the multiple sections of the Concepts section to gain familiarity with Eclipse.
• Select Search from the main Help menu to search the Eclipse Help.
Composer Help
35
Introduction to Composer
Introduction to Composer
Composer is an Integrated Development Environment (IDE) based on Eclipse for building voice applications for the
Genesys Voice Platform (GVP) 8.1+ and routing applications for the Orchestration Server 8.0+.
What is Composer?
Composer is the next generation version of Genesys Studio based on Eclipse 3.5.1. It provides a rich development
experience, which Web Application developers are already used to, for building VoiceXML, CCXML, and SCXML
applications. Familiarize yourself with basic Eclipse concepts by referring to the Workbench User Guide (Help >
Help Contents). Composer provides ability to develop the following types of applications.
For the GVP 8.x NGI Interpreter:
• Pure VoiceXML Applications with full support for Genesys extensions
• CCXML + VXML Applications requiring advanced call control features including Conferencing
• CTI + VXML Applications for Genesys Framework
For the Orchestration Server 8.x SCXML Engine/Interpreter:
• Pure SCXML Applications with full support for all Genesys predefined SCXML functional modules and extensions used
for creating SCXML-based strategies and routing applications.
• Voice Routing SCXML applications for handling media of type voice for Inbound channels.
• Integrated CTI + VoiceXML applications for end-to-end treatment handling in conjunction with GVP and Stream
Manager.
GUI Designer
Composer provides a drag-and-drop based interface for creating VXML and SCXML applications. Users can easily
create flow diagrams by placing and connecting blocks and configuring properties. This approach also provides an
easy mechanism for invoking Web Services and doing database lookups from the Application server-side. Custom
blocks can be created that can be added to the supplied palette of blocks.
Code Editors
For those who prefer to write their own code, Composer provides a set of rich editors for SCXML, VXML, CCXML,
and GRXML along with use case templates.
Composer Help
36
Introduction to Composer
Templates
Out-of-the-box, reusable template applications are provided. These can act as a starting point for new projects and
visual flows and serve as guidelines and tutorials for routing and voice application developers. Composer also
provides templates for its rich editors with the ability to create user-defined custom code snippet templates, which
can be exported and imported to share across team members.
Code Generation
When generating code, Composer provides the ability to generate Static VXML pages to take advantage of the
Platform optimizations. For SCXML routing strategies, Composer provides the ability to generate Static SCXML
pages for improved performance due to caching.
Debugging
Debugging functionality includes the ability to debug VoiceXML applications and callflow diagrams with the GVP
Debugger and GVP Debugging perspective. The real-time GVP Debugger supports both Run and Debug modes.
In the Run mode, call traces are provided and the application continues without any breakpoints. In the Debug
mode, you can input breakpoints, single-step through the code, inspect variable and property values, and execute
any ECMAScript from the query console. Composer provides real-time debugging capabilities for SCXML-based
Orchestration Server (ORS) applications. The ORS Debugger is integrated within the workflow designer for making
test calls, creating breakpoints, viewing call traces, stepping through an SCXML document/workflow, and
debugging applications. Debugging can be started on an existing session or it can wait for the next session that
runs the application at a given URL.
Deployment
Composer provides the ability to deploy applications. Future releases will provide the ability to deploy routing
applications.
Project Management
Composer provides full project management capabilities for managing all the resources in a Composer project.
Routing Strategies
Composer is integrated with Genesys Configuration Server, which provides the ability to define and fetch strategyrelated data residing in the Configuration Server database. This integration allows developers to find and select
routing targets when using Composer's Target block. When creating routing strategies, developers can define List
Composer Help
37
Introduction to Composer
objects and routing-related Statistics.
Composer Help
38
Introduction to Composer
Software Prerequisites
Consult the following:
• Installation topic in the Composer 8.1.4 Deployment Guide.
• The Composer section in the Genesys Supported Operating Environment Reference Guide.
Composer Help
39
Introduction to Composer
Interface Overview
Note: The minimum screen resolution for Composer is 1024x768 on a standard 4:3 aspect ratio monitor. The
recommended resolution is 1280x1024. Lesser resolutions, such as 800x600, are not supported.
Introduction to the Interface
Below is a short video introducing the Composer interface.
Link to video
Sample Applications
For a sample voice applications, see Hello World Sample, which describes a text-to-speech application. For a
sample routing applications, see Your First Application, which describes a DNIS routing application.
Blocks, Connectors, and Properties
The Composer interface uses workflow and callflow design components (blocks and connectors) to create voice
and routing applications
Composer Help
40
Introduction to Composer
It uses drag-and-drop to arrange, add, and delete blocks on a design area. The blocks are connected within the
design area to build the flow for the application. You define the properties for a selected block in Composer's
Properties view. Also see: Working With Diagram Layouts
Interface Elements
The first time you enter the Composer perspective, since your workspace is empty and does not contain any
Projects, you will see an empty Project Explorer on your top-left, and a blank center area. After you create a voice
or routing Project, the Project Explorer shows all the files and resources that make up the Project. The figure
below shows the GUI elements in Composer perspective for a sample routing application.
Composer Help
41
Introduction to Composer
GUI Element Descriptions
The numbers in the figure above are keyed to the table below.
1
The Project Explorer shows all the files and resources
that make up a Project. See Composer Projects and
Directories for more information.
2
For large flows, the Outline view (shown above) allows
you to navigate to the portion of the flow to view in the
design area.
3
The History view maintains previous versions of flows
and application files, allowing you to revert to any
previous version if needed.
Composer Help
42
Introduction to Composer
4
The design area is where you create flows by placing and
connecting blocks. Composer's design area is the work
area that you will use for building your applications.
5
The Palette contains workflow diagram-building blocks or
callflow diagram-building blocks grouped in various
categories: Voice Block Palette Reference and Routing
Block Palette Reference.
6
The Properties view shows block properties and allows
you to modify settings, set variables, and otherwise
change or set the properties corresponding to a block.
This area also displays Call Traces during debugging, or
Problems during validation or testing.
7,8
In the top toolbar, the Validate button allows you to check
for syntax errors. The Generate Code button creates
VXML and SCXML pages from the diagrams you create.
9
Menus and Toolbars provide commands and operations
for running Composer.
10
Perspective buttons show the active perspective and let
you easily move between perspectives. By default, when
you enter the workbench for the first time, you will be
taken inside the Composer perspective. Perspectives are
arrangements of different sections of the GUI in a manner
that facilitates easy use of a particular feature. For
example, the GVP and ORS Debugging perspectives will
show those sections (Breakpoints, Call Trace, Variables,
and so on) that are useful when debugging an application.
Composer displays a Help view on the right if you select Help > Search or Help > Dynamic Help.
Perspectives
When you select Window > Perspective > Open Perspective > Other, all perspectives available in Eclipse are
listed, including those not used by Composer.
Use the following Composer perspectives for building applications:
• GVP Debugger, for debugging applications you build or import
• ORS Debugger, for debugging routing applications you build or import
• Prompts Manager perspective, which provides the ability to quickly review all prompts in a Composer Project
• The Composer perspective shows the Project Explorer, Outline view, design area, and Palette of blocks. Composer
perspective can show the following tabs in the lower pane: Properties, Prompts Manager, Problems, Console, and
Call Trace. Select Window > Open Perspective.
• Composer Design perspective can be used to show only the palette of blocks, the canvas area, and the Properties tab.
Any customized perspective appears in this list. You can configure perspectives on the Window > Preferences >
General > Perspectives preference page.
Composer Help
43
Introduction to Composer
Customizing the Show View Menu
A view can be displayed by selecting it from the Window > Show View menu. You can customize this menu by
using Window > Customize Perspective. Click the Submenus down arrow and select Show View.
Composer Help
44
Introduction to Composer
Using the Interface
Blocks
A block is the basic building unit that you use to create applications. In Composer perspective, the palette of blocks
is located in the right-most part of the main window (unless the Help window is also visible) and contains various
categories of blocks. Every application must start with an voice Entry block or routing Entry block. You can also
create Custom Blocks. A routing applications starts with Interaction Process Diagram Blocks.
Using Blocks
When creating voice application callflows and routing application workflows using the designer:
• You double-click or drag-and-drop callflow blocks and/or workflow blocks to place them onto the center area (canvas).
• You configure properties for each block.
• You connect the blocks together by drawing connection links to define the flow.
Block Names and Multi-Byte Characters
Composer block names can contain only alphanumeric characters. If multiple-byte characters are used in block
names, the code generation step fails and no SCXML or VXML file is generated from the Composer diagram.
Methods for Adding Blocks
There are a few ways to add blocks from the Palette to the canvas. The most common methods are as follows:
• Click on the block icon on the palette, release the mouse and click on the target location on the canvas area.
• Double-click a block icon on the palette.
• Click on the block icon on the palette, and while holding down the mouse button, drag and drop the block to the
canvas.
Any of these methods will add the new block and you can then type the name of the block on the canvas itself. Click
here to read about block naming restrictions.
Composer Help
45
Introduction to Composer
Outline View
For large call or workflows, the Outline view allows you to navigate to a portion of the flow diagram to view in the
main canvas. It can also be used to facilitate navigation for other types of elements that might appear in the canvas
or editor window, such as a large VXML file displayed in the VXML Editor. For more information, see the Outline
View topic in the Eclipse Workbench User Guide (Help > Help Contents).
Simulation View
Simulation view shows the VoiceXML or SCXML code (read only) for a selected block (IPD blocks do not have this
view). To add the Simulation view to the current perspective:
• Click Window > Show View > Other > Composer > Simulation.
Block Context Menus
Or, you can use a block's context menu as follows:
• Select a block in the canvas, then right-click the box and select Simulate Code from the context menu as shown in the
figure below. The Simulation view displays the code for the selected block.
The History view maintains previous versions of call and workflows and application files, allowing you to revert to
any previous version if needed.
• For more information, see the Local History topic in the Eclipse Workbench User Guide (Help > Help Contents).
The Problems view is used during validation of callflows, workflows, and files (VXML, SCXML, GRXML, and so on).
It displays information about errors encountered when validating an application.
• For more information, see the Problems View topic in the Eclipse Workbench User Guide (Help > Help Contents).
Composer Help
46
Introduction to Composer
Connection Links
Blocks are connected to each other using connection links. There are two types of connection links:
1. Use OutLinks to connect one block's output port to another block's input port:
2. Use Exception Links to indicate error or exception conditions by connecting from a block's exception port to another
block's input port:
Find the connection links at the top of the palette on the right side of the Composer window.
Example
The figure below shows examples of using the link tools:
In the above example, the red links (going from the Menu block to the Prompt block) result from using the Exception
Link tool to connect the two blocks. The black links (going from the Menu block to the Record block and the Log
link) result from using the Outlink tool.
Adding a Link
To add a new Output Link (or Exception Link):
1. Click the Output Link (or Exception Link) icon in the palette.
2. Move the mouse over to the source block. The cursor will change to an upward arrow.
3. Click once on the source block and keep the mouse button pressed. Then drag the mouse onto the target block and
release the mouse button.
Composer Help
47
Introduction to Composer
This will add the connection link between the two blocks. To use an Exception Link, the source block must have an
exception port defined. This is done by selecting at least one supported exception within the block's Exceptions
property. Another method for adding an Output Link or Exception Link between two blocks is as follows:
1. Click once on the source block to select it.
2. Hold the Ctrl key and click once on the target block to select it as well.
3. Double-click the Output Link (or Exception Link) icon in the palette to create a connection between the two blocks.
Again, to use an Exception Link, the source block must have an exception port defined.
Changing Style and Appearance
Composer allows you to change the style and appearance of your connection links to suit your needs. To change
connection link appearance:
1. Select the connection link(s) you wish to change on the diagram (Ctrl-click to select multiple links). If the Properties
view for the selected link is not visible, select Window > Show View > Properties. Or right-click the link and select
Show Properties View from the shortcut menu.
2. In the Properties view, click the Appearance button to the left. A palette of appearance options is displayed in the
Properties view.
You may change any of the following:
• Font, Font Size, Font Style, and Color
• Line and Arrow Style
• Smoothness of the connection line (None, Normal, Less, or More)
• Routing Style (Oblique, Rectilinear [default], or Tree), as well as the option to avoid obstructions or choose the closest
distance for the link (even if it must cross over another block)
• Jump links set how links will be displayed when a link needs to jump over or cross another link (None, All, Below,
Above), and the shape of the link crossing over can be Semi-Circle, Square, or Chamfered
• Reverse jump links switches the orientation of the semi-circle, square, or chamfered shape of a crossing link
Composer Help
48
Introduction to Composer
Composer Code Editors
File > New > <file_type>
Composer provides the ability to hand-code SCXML, VoiceXML, CCXML, GRXML, JSP, and ASP.NET for custom
scripts as a part of the application development process. The editors have standard editing capabilities and timesaving features such as a code snippet library, validation checks for errors (during design and save time), and
syntax highlighting.
Code Editing Features
The editors provide:
Composer Help
49
Introduction to Composer
• Standard editing features such as cut, copy, paste, undo, show line numbers, search and replace, bookmarks and
TODO markers
• Standard Eclipse Editor features; local file history support, Team support for source code control, compare files.
• The ability to do background validation of the text as the user types, showing squiggly marks for errors as is done in
Microsoft Word.
• A Validate option to validate against the schemas.
• A code snippet library with the ability for developers to add their own custom scripts.
• An outline view for quick navigation and the ability to view and edit the XML in tree format.
• Syntax coloring with the ability to customize the colors.
• A spell checking feature; a yellow squiggly line is shown below words that are misspelled.
• Quick-fix choices to fix the spelling or ignore / disable the check.
• Task tags features for setting preferences to auto scan comments with TODO in comments, and automatically add
tasks corresponding to these comments.
• Context-sensitive help as the user types in the code
Using the Editors
Composer editors are embedded/integrated within the user interface and are made available to you whenever a
.scxml, .vxml, .ccxml, .grxml, or .jsp file is created or accessed within Composer.
For additional information, see Accessing the Editors and Templates.
Composer Help
50
Introduction to Composer
Enabling/Disabling Functionality
You may hide voice application (GVP) and/or routing application development capabilities through a Composer
preference setting. This feature is useful for developers who are only developing applications for GVP or Universal
Routing. To hide voice or routing development capabilities:
1. Select Window > Preferences.
2. Expand General and select Capabilities.
3. Click the Advanced button.
4. In the Advanced Capabilities dialog box, expand Composer.
5. Check or uncheck Composer Route or Composer Voice based on your need.
• If you uncheck Composer Voice, the ability to create Projects and diagrams with callflows will no longer be
available. Also, perspectives and views exclusive to callflows will not be available. This means you temporarily
won't be able to design voice applications for GVP until you re-enable Composer Voice capability.
• If you uncheck Composer Route, the ability to create Projects and diagrams with workflows is not available. Also,
perspectives and views exclusive to workflows are not available. This means you temporarily won't be able to
design routing applications for Universal Routing 8.x until you re-enable Composer Route capability.
6. Click OK in both dialog boxes.
Composer Help
51
Introduction to Composer
Hiding File Types and Blocks
You can hide Composer file types by using basic Eclipse functionality in Composer. This may be desired when
certain functionality is not applicable to your environment. For example, when using Voice capabilities, and VXML is
used but not CCXML, you may wish for the CallControlXML file type to be hidden from the File > New menu. The
following steps may be used:
1. Select Window > Customize Perspective. The Customize Perspective dialog appears.
2. Click the Shortcuts tab.
3. Expand Composer and check Others.
4. In the list of shortcuts, uncheck <file-type>, where <file-type> is the type to be hidden.
5. Click OK.
6. Repeat for other perspectives if desired.
This customization is specific to the workspace. If you use other workspaces, you must customize them as well.
This is base Eclipse behavior where customization is saved within the workspace.
Hiding Diagram Building Blocks
You can also customize the palette of diagram-building blocks. Right-click a block category (such as Flow Control)
and select Customize. You can then hide and unhide blocks in that category.
Hiding/Displaying the Palette
Should you accidentally cause the palette to disappear, click the Hide/Show Palette (right-pointing) triangle.
Composer Help
52
Introduction to Composer
Composer Help
53
Introduction to Composer
Minimizing and Restoring Views
Panes in the Composer window contain various views. Each view has its own tab. To minimize a pane containing
views:
• Click the
button to minimize the pane. This causes the views to appear in a toolbar (trim stack toolbar). The
toolbar appears in close proximity to where the pane was located.
The toolbar could be on the side or at the bottom of the Composer window depending on the selected perspective.
For example, assume you are editing a file in Composer Design perspective and minimize the pane below, which
contains Properties, Prompts Manager, Problems, Console, Call Trace, and Bookmark views. In this case, the
minimization causes a toolbar to appear at the bottom of the Composer window. Depending on your screen, you
may have to maximize the entire Composer window in order to see this toolbar.
To restore a minimized view:
• Click the
button to restore all minimize views.
• Click a single view button to restore an individual view.
Restore All Views
Select Window > Reset Perspective. If the desire view does not appear, select Window > Show View.
Show Advanced Properties
When creating a diagram in Composer perspective, this button appears on the right side of the Composer GUI,
between the palette of blocks and the Properties view.
Composer Help
54
Introduction to Composer
Certain block properties are hidden by default from the Palette. If you have permission you can use the Show
Advanced Properties button to display/hide these properties.
Moving the Location of a View
To move a view to another location, hold down the cursor next to the view name until you see a red circle with a
slash in the middle. Keep holding down the cursor, move the view to the desired location, and release the cursor.
Composer Help
55
Introduction to Composer
Localization
The information below describes translating various elements of the Composer user interface in your preferred
language. For information on translating the entire user interface in French Canadian, see Language Locales in the
Composer 8.1.4 Deployment Guide.
Limitations
There are some limitations to localization, which are detailed here.
Translating the Palette
After installing the Composer Language Pack, if you open Composer and continue to use an existing workspace,
you will discover that the Palette is not localized. This is because Palette customization happens within Composer.
You can change the labels, descriptions, and visibility of individual tools in the Palette. Composer preserves your
customizations and, for that reason, Composer keeps the settings of your workspace Palette even after a Language
Pack is installed. To workaround this issue, you can perform one of the following actions.
1. Start a new workspace. The Palette will be localized in the new workspace.
2. If you are willing to lose your current Palette settings:
• Shut down Composer.
• In a file explorer, go to <workspace>\.metadata\.plugins\com.genesyslab.composer.diagram, where
<workspace> is your Composer workspace.
• Delete the file paletteSettings.xml.
• Restart Composer. The Palette will be localized in your existing workspace.
Translating Diagram Properties
The diagram preferences shown below use the Eclipse GMF runtime preferences, including their message strings.
Due to limitations in Eclipse related to translating GMF Runtime, when localizing, certain diagram preferences are
not translated.
• Window > Preferences > Composer > Composer Diagram > Appearance
• Window > Preferences > Composer > Composer Diagram > Connections
• Window > Preferences > Composer > Composer Diagram > Pathmaps
• Window > Preferences > Composer > Composer Diagram > Printing
• Window > Preferences > Composer > Composer Diagram > Rulers and Grid
Composer Help
56
Introduction to Composer
Translating Enumeration Properties
In the Properties view, many properties of blocks are enumerations, which are collection of fixed values, from which
one is selected. Internally within Composer, a number of different dialogs, drop-down boxes, and various other
mechanisms are used to display the various enumeration properties. The 8.1.3 release of Composer does not to
enforce uniform behavior when translating enumeration properties. As a result, some enumeration properties will
appear localized, while others may not. This has no impact on diagram validation, code generation, or runtime
behaviour. It is merely the values displayed in the Properties view that appear either translated or untranslated. The
underlying code that is generated will always be the same.
East Asian Characters
If you are using characters from an East Asian language (for example, Chinese, Japanese, Korean) in Expression
Builder, you may find that they do not display properly, and appear as squares rather than the expected characters.
The most likely cause of this issue is that the operating system font does not support East Asian language
characters. As a workaround, change the Dialog Font setting from within Composer.
1. In Composer, go to Window > Preferences.
2. Select General > Appearance > Colors and Fonts.
3. In the preference dialog, select Basic > Dialog Font.
4. Click Edit to bring up the font selection dialog.
5. Choose a font which can render East Asian languages, such as Arial Unicode MS.
6. Click OK on the font selection dialog, then click OK on the preferences dialog.
Connection Profile and Non-ASCII Characters
Database Connection Profiles do not support non-ASCII characters. Use only ASCII characters when creating
Connection Profiles.
Composer Help
57
Introduction to Composer
Composer Compared to IRD
Here is a short video on the advantages of moving to Composer from Interaction Routing Designer as well as an
interface comparison.
Composer Compared to IRD
Link to video
Integrated Development Environment
• Composer is a single Integrated Development Environment (IDE) for creating applications to routing interactions as
well as to orchestrate the entire customer experience. Composer-created voice and routing applications can
command and control the customer experience through all channels (IVR, voice, e-services, and so on).
• Composer's open framework enables widely-available, existing competencies to be used to create reusable
components that manage the customer experience. The IDE allows both customers and integrators to utilize existing
code sets (HTML, VXML, java, perl, REST and others) to control the customer experience.
• The open framework also allows simplified integration into all Enterprise applications to harness the information within
the Enterprise to drive and personalize the customer experience.
Session-Based Versus Interaction-Based
Composer works with the Orchestration Server platform, which is session-based as compared to the Universal
Routing Server (URS) platform, which is "interaction based.' A session can last for the length of the customer
journey, across multiple interactions. URS only executes strategies (workflows) that interact on a single interaction.
In contrast, ORS does not need to have an interaction to perform useful functionality. All ORS requires is an API call
in order to execute. In this manner, the ORS platform can be thought of as a general purpose workflow platform to
control the workflow regardless of whether or not you have an interaction (email, SMS, mobile, social, voice, and so
on).
Differences from IRD
In the past, Universal Routing's Interaction Routing Designer was the only Genesys tool to create routing
applications. Genesys Composer is now the tool of choice for creating both routing and voice self-service
applications.
A few of the differences between Composer and Interaction Routing Designer are listed below.
• Composer is integrated with Orchestration Server allowing you to manage customer conversations spread out over
time using the ORS session-based functionality and persistent storage as well as Orchestration Extensions.
• Composer encompasses IRD's functionality and much more routing functionality in general.
Composer Help
58
Introduction to Composer
• Composer lets you create routing applications using an open language (SCXML) and ECMAScript for decision-making.
In contrast, IRD uses a closed Genesys proprietary language (IRL) and you are limited to IRD's objects and functions.
• Composer gives the option of writing your own SCXML code and/or using predefined blocks.
• Unlike IRD, you can also use Composer to create voice self-service applications for Genesys Voice Platform, including
VoiceXML and CCXML-based applications. You can also create integrated voice and routing applications.
• Any routing application created in IRD can easily be created in Composer.
Composer Routing Application Types
You can use Composer's predefined blocks and/or write your own SCXML code to create routing applications that
route based on various criteria such as:
• Agent, Agent Group, ACD Queue, Place, Place Group, Route Point, Skill, or Variable
• last called agent
• date and time
• the value of a statistic,
• dialed number (DNIS)
• originating number (ANI)
• percent and conditional routing
• Service Level Routing
The above list is by no means complete. It represents only a few types of routing applications that can be created in
Composer. Since Composer uses open languages (SCXML and ECMAScript), you are not limited to its pre-defined
blocks, but are free to create many types of routing applications.
Composer Blocks Mapped to IRD Objects
Composer refers to the fundamental element of a workflow as a block whereas in IRD documentation, this element
is referred to as an object. A few IRD object/Composer block equivalents are presented below. The tables group
IRD objects based on their IRD toolbar category name and point to the corresponding functionality in Composer.
Tip
For a complete list of Composer blocks, including all those without an IRD equivalent, see
RoutingBlockPaletteReference.
Composer Help
59
Introduction to Composer
IRD Data & Services
IRD Object Name
Composer Block Name
Description
Database Wizard
DB Data
DB Data retrieves information from
the database. Uses a Query Builder.
Web Service
Web Service
Invokes Web Services. GET, POST
and SOAP over HTTPS are
supported.
Web Request
Invoke any supported HTTP web
request or REST-style web Service.
See sample: Routing Based on Web
Request.
Composer Block Name
Description
Assign
Assigns a computed value/
expression or a literal value to a
variable. Variables are defined in
the Entry block. Capable of multiple
assignments.
Subroutine
Creates reusable sub-modules.
Entry
Entry
Sets global error (exception)
handlers. Defines global variables
(see Variables section below).. All
routing strategy diagrams must start
with an Entry block.
Exit
Exit
Terminates the strategy and returns
control back to calling workflow in
case of a subroutine.
Error Segmentation
Multiple error output ports can be
created in Composer blocks based
on each block's Exception property.
IRD Miscellaneous
IRD Object Name
Assign
Multi-Assign
Call Subroutine
ECMAScript
Builds an ECMAScript expression
using the Expression Builder. Many
URS functions are available as
Genesys Functional Modules
described the Orchestration Server
Documentation Wiki Can invoke
multiple functions.
If
Assign, Branching, ECMAScriptBlock
blocks all open Expression Builder
Expression Builder can be used to
create IF expressions.
Multi-Attach
ECMAScript
Can be used for attaching data to an
interaction.
Function
Multi-Function
Composer Help
60
Introduction to Composer
IRD Routing
IRD Object Name
Composer Block Name
Description
Target
Routes an interaction to a target,
which can be Agent, AgentGroup,
ACDQueue, Place, PlaceGroup,
RoutePoint, Skill, or Variable. Skill
target uses Skill Expression Builder.
Percentage
Target
Statistics Order property in Target
block, lets you perform percentage
allocation. Also see sample: Routing
Based on Percent Allocation.
Default
Default Route
Routes the interaction to the default
destination.
Selection
Routing Rule
Orchestration Server 8.1 does not
support service level routing rules.
Switch to Strategy
Orchestration Server 8.1 does not
support switch to strategy routing
rules.
Force Route
Not exposed as a routing rule in
Composer.
Target
Although statistical routing rules are
not yet supported as in IRD's
Statistics routing object, users can
use the Target object Statistic
property to route based on the value
of a statistic. A Statistics Manager
and Builder let you create your own
statistics from URS predefined
statistics.
IRD Object Name
Composer Block Name
Description
ANI
Branching
See YourFirstApplication: DNIS
Routing for an example.
DNIS
Branching
See Your First Application: DNIS
Routing for an example.
Date
Branching
See the sample: Routing Based on
Date and Time.
Day of Week
Branching
See the sample: Routing Based on
Date and Time.
Time
Branching
See the sample: Routing Based on
Date and Time.
Classification Segmentation
Branching
For classification segmentation, an
ECMAScript function determines if a
particular category name or ID exists
Force Route
Statistics
IRD Segmentation
Composer Help
61
Introduction to Composer
in the array of category objects
represented by an application
variable.
Generic
Branching
Use as a decision point in a workflow.
It enables you to specify multiple
application routes based on a
branching condition.
Also see Context Services Blocks.
IRD Voice Treatment
See Composer Equivalent to IRD Treatment.
IRD Multimedia
See Composer Equivalent to IRD Treatment.
IRD Outbound
See Outbound Common Blocks
Context Services
See Context Services Blocks
Business Process
See Interaction Processing Diagrams Overview and Interaction Process Diagram Blocks.
Reusable Objects
• IRD List Object: See Composer's List Object Manager.
• IRD Variable List Dialog Box: See Entry block Variables property.
In contrast to IRD, which defines variables in a special dialog box outside of the strategy, Composer defines both
workflow and Project variables.
Composer Help
62
Getting Started with Composer
Getting Started with Composer
This section is your first stop for getting started with Composer. It discusses the following topics:
• Running Composer for the First Time
• Software Updates Functionality
• Integrating with Source Control Systems
• Composer Projects and Directories
• Working with Diagram Layouts
• Accessing the Editors and Templates
• Multiple User Environments
• Security Configuration
• Upgrading Projects/Diagrams
• Keyboard Shortcuts
• Default Logging
• IRD Functionality Included in Composer
Also see: Composer 8.1 Routing Applications User's Guide
Composer Help
63
Getting Started with Composer
Running Composer for the First Time
When running Composer for the first time, check out the video Getting Started After Installation. Composer is built
on Eclipse. If you have not already done so, run Eclipse as described in the video.
Workspaces
When you run Composer, before the user interface appears, a dialog box opens with a suggested workspace,
which is a location (folder) for your projects and files in addition to any special folders that Eclipse needs to maintain
for its internal bookkeeping. The dialog box gives the option of changing the workspace to a different location. New
projects created in Composer will be created under this workspace as subfolders. After the Composer interface
opens, the Project Explorer shows this location. You can change this location by selecting File > Switch
Workspace.
Important
Genesys recommends that the workspace folder name has no spaces in its path (for example,
c:\comp81dev. This recommendation is not required and Composer does not enforce this.
Genesys also recommends using the component version in the name to avoid confusion during
upgrades. When prompted for a workspace folder, do not specify parenthesis in the workspace
path. The workspace should not be located in a ClearCase view, as this will cause problems
accessing files later during development.
• Genesys recommends that the workspace folder name has no spaces in its path (for example, c:\comp81dev). This
recommendation is not required and Composer does not enforce this. Genesys also recommends using the
component version in the name to avoid confusion during upgrades.
• When prompted for a workspace folder, do not specify parenthesis in the workspace path.
• The workspace should not be located in a ClearCase view, as this will cause problems accessing files later during
development.
Setting Up Your Workspace
The first time you open Composer, it asks you to specify the location of your workspace. Eclipse remembers this
location and will present it for all subsequent times when you open Composer. If you do not wish to be prompted
each time for this path and plan to use the same location for all your projects, you can check the Use this as the
default and do not ask again option to skip this screen on future launches.
Composer Help
64
Getting Started with Composer
Welcome Screen
When a new workspace is created for the first time, you will be taken to the Welcome screen, which provides
getting started overview topics, tutorials and links for references on the Web. The next time you open Composer, if
the Welcome screen still opens, click it by clicking the "x" on the Welcome tab. To go back to the Welcome screen
at any time:
• Select Help > Welcome.
Opening Composer Perspective
Select Window > Perspective > Open Perspective > Other. All perspectives (views) available in Eclipse are
listed, including those not used by Composer. Select Composer perspective.
Composer Help
65
Getting Started with Composer
Software Updates Functionality (Plugins)
You can find information on installing new software (such as for Dynamic Web Projects or updating existing plug-ins
in the Eclipse help. For example, using "update software" as search words displays plugin topics in the Eclipse
Workbench User Guide (Help > Contents).
Plugin Installation Requirements
It is standard Eclipse behavior for plugins to be installed in C:\Program Files\... (i.e. the base Composer installation
directory), and NOT in the user's workspace. The installation of plugins must be performed by an adminn user.
Composer Help
66
Getting Started with Composer
Dynamic Web Projects
After you install Java EE Developer Tools plugins, you can create a Dynamic Web Project containing pages with
active content. Unlike with static Web Projects, dynamic Web Projects enable you to create resources such as
JavaServer Pages and servlets. Here's how to get started:
1. Composer Help >> Install New Software.
2. Click Add. In the resulting box, enter http://download.eclipse.org/releases/galileo/
3. Select it to see the available package.
4. Select the Web, XML, and Java EE Development Eclipse Java EE Developer Tools entry.
5. Install the plugins.
6. Restart Composer.
7. Create a Dynamic Web Project.
Note: Other missing project types can be similarly enabled.
Composer Help
67
Getting Started with Composer
Integrating with Source Control
This section describes setup instructions for using source control with Composer. The ClearCase source control
system is supported as well as Subversion.
ClearCase Plug-in Installation
To install ClearCase plug-ins for use with Composer:
1. Install ClearCase on the machine that Composer will run on.
2. Exit Composer. If you want to print these instructions to use after closing Composer, click the Print Page icon at the
top-right of the Eclipse Help window.
3. Install the ClearCase Eclipse plug-in from IBM:
a. Get the following files from IBM's website:com.rat.cc.win32-20080131A.zip and
com.r.cc.ccrefresh.all-20061107.zip
http://www.ibm.com/developerworks/rational/library/content/03July/2500/2834/ClearCase/clearcase_plugins.html
Note: Actual ZIP file and directory names may change as IBM continues to update the plug-ins. These documented
names are current at the time of this writing. These plug-ins are for Eclipse v3.3 and not 3.4. Even though
Composer 8.1. is based on Eclipse 3.4, Genesys recommends that you install the plug-ins listed for Eclipse 3.3.
b. Extract the two ZIP files to a location of your choosing, essentially merging the contents. There is a
duplicate file .eclipseextension in the two ZIPs; you can safely ignore that file. The ZIP files, when
extracted, create a directory structure like:
c. If it does not already exist, create the directory ${Composer 8.1.Install}\features, where
${Composer 8.1.Install} is the installation root of your Composer 8.1 installation.For example,
${Composer 8.1.Install} might be C:\Program Files\GCTI\gvp\Composer 8.1
Composer Help
68
Getting Started with Composer
d. From the directory where the ZIP files were extracted, copy the folders in the features directory to
${Composer 8.1.Install}\features, and copy the directories in the plugins directory to
${Composer 8.1.Install}\plugins.
Note: Instead of dropping the extracted zip file content in these two locations, you may place the entire (eclipse
folder) extracted content in the following folder location ${Composer 8.1.Install dir}\dropins.
4. Ensure that ClearCase capabilities are enabled.
a. Go to Window > Preferences > General > Capabilities.
b. Make sure that the Team checkbox is checked. It must be checked in order for ClearCase MVFS Support
and ClearCase SCM Adapter preference items to appear in the Preferences window. Please note you must
restart Composer to see the changes.
5. Enable MVFS Support:
a. Start Composer.
b. Select Window > Preferences > Team > ClearCase MVFS Support.
c. Click the Workspace link underMVFS Support Preferences and select the Refresh Automatically
check box.
d. Click the Apply button.
e. Click OK to close the Workspace dialog box.
f. Again, open Window > Preferences > Team > ClearCase MVFS Support and make sure that Enable
ClearCase dynamic view file system support is selected, then click OK.
6. Configure the ClearCase plug-in. Configuration can be accessed from Window > Preferences > Team > ClearCase
SCM Adapter from the tree in the left-side panel. The recommended settings are shown in the image below:
Composer Help
69
Getting Started with Composer
Note: You can read more about ClearCase features and working with ClearCase view from the help topic Rational
ClearCase SCM Adapter available from the Eclipse Help system. These help topics will be available only after
installing ClearCase plugins.
ClearCase Usage
To use ClearCase functionality within Composer:
1. Create a view using ClearCase Explorer, or use an existing view.
2. In Eclipse, if you don’t see the ClearCase toolbar, make the toolbar appear by clicking Window > Customize
Perspective. In the dialog box that displays, click the Commands tab, select the ClearCase command group and
click OK.
Composer Help
70
Getting Started with Composer
3. Once the toolbar is available, click on the
button.
After this, any Composer Project that resides in a ClearCase view will have the view name displayed next to it in the
Project Explorer window. Also, the icons for files and folders under source control will show the status, such as
checked out, hijacked, and so on.
Creating a Composer Project Managed by ClearCase
To create a new Composer Project that will be managed by ClearCase:
Composer Help
71
Getting Started with Composer
1. Bring up the Project wizard (File > New).
2. Clear the Use default location check box and enter in the Location field a path that resides inside your ClearCase
view.
The path becomes the root of the Composer Project. Note that the files in the new project will not be checked into
ClearCase until you use the Add to Source Control function.
To add a project that is already checked into ClearCase to your Composer 8.x workspace:
1. Use the Import wizard (File > Import).
2. Select Existing Projects into Workspace.
3. In the Select root directory field, enter the path of the project residing in your ClearCase view. Check the box
corresponding to the Project name.
Important: Leave the Copy projects into workspace box unchecked. If it is checked, the imported project will not
be under ClearCase control.
To edit a file that is under source control, it must be checked out from ClearCase. After editing, it can either be
checked in to create a new source control version, or the checkout can be undone to revert the file back to its
previous version. You can also compare changes to the previous version before checking it. All of these operations
can be accessed in several alternative ways:
• Right-click the file name in Composer's Project Explorer view, and use the Team submenu.
• Select the file in Composer's Project Explorer view, and use the ClearCase menu on the top menubar.
• Select the file in Composer's Project Explorer view, and use one of the buttons on the ClearCase toolbar.
Note: If you choose to remove a ClearCase-managed Composer Project from your workspace, you will be
prompted with a Confirm Project Delete message. Genesys strongly recommends that you choose the Do
not delete contents option. This leaves the files in your ClearCase view untouched. Otherwise, the files may be
removed from source control.
Subversion Configuration
Subversion is a client–server versioning system. You can integrate Subversion with Composer in order to have a
version control over Projects. Subversion creates and maintains a repository on the Project web server. Its clients
run on Composer machines and connect to the Subversion server over the Internet.
Note! The integration steps below are not version-specific or Composer-specific. The steps refer to the interface
and capabilities provided by the Eclipse Integrated Development Environment (IDE) (Subclipse Team Provider
plug-in) and CollabNet (CollabNet Subversion Server) products.
The recommended steps are as follows:
1. Install and Configure Subversion Server.
2. Download the Collabnet Subversion server from the website: http://www.collab.net/downloads/subversion/
Composer Help
72
Getting Started with Composer
3. Follow the installation and configuration instructions from the vendor for the operating system you are working with.
Complete registration if required. When the installation executable runs, the wizard has an option to View Installation
Information.
Note: If you are running IIS on the server machine during installation of Collabnet Subversion server, you may wish
to change the Apache port to “81” instead of the default 80 to avoid conflict.
4. Follow post installation instructions from the vendor and complete Collabnet Subversion server configuration.
5. Configure the Subversion repository. Follow the instructions provided by the vendor (http://www.collab.net/downloads/
subversion/) to define the permissions, user name, and password for accessing the repository. Use the instructions for
the specific version of the Callabnet Subversion server that you installed in step 1.
Note: Subclipse provides an option for creating a repository, but this is more suited for personal development where
you do not need to share your code. Typically, you would set up a Subversion server, create the repository on the
server and then point Subclipse at the server.
6. Install the Subversion client using the capabilities of Eclipse by adding Subclipse to the Eclipse IDE. Subclipse is a
project to add Subversion support to the Eclipse IDE. Use Eclipse's Software Manager to add Subclipse to our Eclipse
IDE.
a. Add the Subclipse update version compatible with Subversion server installed in step 1.
b. From Composer's Help menu, choose Install New Software to open the Install wizard.
c. Select the required Subclipse update from the site: (http://subclipse.tigris.org/update_1.6.x/)
Composer Help
73
Getting Started with Composer
Note: The above link may not be current. In this case, check the http://subclipse.tigris.org/ site. The Download and
Install section lists update sites for various Eclipse versions. Choose the correct site based on the Eclipse version
for Composer. Composer’s Eclipse version can be determined from Help > About and clicking the Eclipse.org icon.
d. Click on the Download link to go to the download page. There you will find the URL to enter into the
Eclipse Install wizard.
e. Follow the wizard and instructions provided in the Help > Contents > Workbench User Guide for
installing new software.
f. Restart Composer if required by installer.
7. Create the CVN (Subversion) item in Composer menu bar. Follow the Eclipse instructions on customizing perspectives
/creating command groups (Help > Contents > Workbench User Guide > Concepts > Perspectives >
Configuring perspective command groups.
8. Define CVN repository location to your Eclipse IDE. Follow the instructions provided in Help > Contents >
Workbench User Guide > Getting Started > Team SVN Tutorial. Use the instructions for Specifying a project
location.
For more details working with CVN, please, see Help: Subclipse - Subversion Eclipse plugin.
Checkin Error
If you are using Source Control tools, checking in Composer Projects contents after a Project Upgrade may results
in an error. See Checkin Error During Source Code Integration.
Composer Help
74
Getting Started with Composer
Project Types and Directories
A Composer Project is associated with either:
• A voice application for Genesys Voice Platform or
• A routing application for the Orchestration Platform.
In general, a Project consists of a predefined, structured set of files and folders that contain all resources for the
application. See the Project Explorer below.
For information on Projects referencing other Projects, see the figure in topic Project Properties dialog box. Expand
Project References.
Composer Help
75
Getting Started with Composer
Java and .NET Projects
There are two types of Composer Projects:
• Java Composer Projects -- Use JSP and Java to implement custom business logic. These Projects can be deployed
on web applications servers as described in the Composer 8.1 Deployment Guide. See Creating a New Project.
• .NET Composer Projects -- Use ASP.NET and C# to implement server-side blocks and custom business logic. The
Project can only be deployed to Microsoft IIS. See .DOTNet Troubleshooting for steps for working with Composer
.NET Projects when a machine does not have WSE 3.0:
Starting a New .NET Project
To start a new .NET Project:
1. Click the Create a NET Composer Project button in the menu bar. You can also click the button above the Project
Explorer and select Composer > Composer > Projects > .NET Composer Project.
2. In the Project dialog box, type a name for your Project.
3. If you want to save the Composer Project in your default workspace, select the Use default location check box. If not,
clear the check box, click Browse, and navigate to the location where you wish to store the Composer Project.
4. Select the Project type.
5. Click Next.
6. If you want to use templates, expand the appropriate Project type category and select a template for your application.
.NET Project Warning
.NET Projects may show this warning in the Console View: include\getWebServiceData.aspx(482):
warning CS0618: 'Microsoft.Web.Services3.SoapContext.Security' is obsolete:
'SoapContext.Security is obsolete. Consider deriving from SendSecurityFilter or
ReceiveSecurityFilter and creating a custom policy assertion that generates these
filters. This warning can be ignored and no workarounds are needed. It will not show up as an error or warning
in the Problems View.
.NET Project Logging
Starting with 8.1.410.14, .NET Project logging configuration is handled with file web.config located in the Project
root directory. The level of logging can be changed to values:
OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
The highest possible rank and is intended to turn off logging.
Severe errors that cause premature termination. Expect these to be immediately visible on a status
Other runtime errors or unexpected conditions. Expect these to be immediately visible on a status c
Use of deprecated APIs, poor use of API, 'almost' errors, other runtime situations that are undesira
unexpected, but not necessarily "wrong". Expect these to be immediately visible on a status console.
Interesting runtime events (startup/shutdown). Expect these to be immediately visible on a console,
conservative and keep to a minimum.
Detailed information on the flow through the system. Expect these to be written to logs only.
More detailed information. Expect these to be written to logs only.
Composer Help
76
Getting Started with Composer
Voice Application Project Types
Voice applications are VoiceXML applications with full support for the Genesys Voice Platform. A Voice application
can be deployed on a web application server that meets the minimum prerequisites described in the Composer 8.1
Deployment Guide. Also see Creating Voice Applications for GVP.
Routing Application Project Types
Routing applications are SCXML applications with full support for the modules described in the Orchestration
Developer's Guide. A Routing application can be deployed on a web application server meeting the minimum
prerequisites described in the Composer 8.1 Deployment Guide. Also see Creating a New Routing Project.
Project Structure/Directories
A Composer Project (Java or .NET) will contain some or all of these subfolders depending on the type of Project:
• App_Code -- .NET Composer Projects only. This folder will be empty by default as Composer bundles all the C#
classes in to the ComposerBackend.dll file. Custom C# classes will also go into this folder.
• bin -- Any libraries used in a .NET Composer Project go here.
• Callflows -- Folder for storing all the callflow diagrams (.callflow files)
• db -- Database connection.properties and .sql files are stored here.
• include -- Composer-provided standard include files used by Backend logic blocks.
• debugging-results -- The Run As option on a VXML file creates a debugging-results folder when no
debugging-results folder exists in the Project.
Custom JavaScript files (.js) can be included in a routing application by placing the file(s) in the include/user
folder. Re-generating code for all IPD diagrams in the project is required after placing the files. The JavaScript
functions in the specified .js file can then be used from any Workflow block that supports writing expressions e.g.
the Assign, Branching and ECMASCript blocks.
• META-INF -- Created when you create a new Java Composer Project. It is needed for Java and is included when a
.war file is exported from Composer. Do not make changes to this directory.
• WEB-INF/lib -- Java Composer Projects only. Folder for external dependency libraries such as JAR files. Note: The
Tomcat application server should be restarted after changing any JAR files in this folder.
• Interaction Processes -- Folder for storing all the interaction process diagrams (.ixnprocess files).
• Resources -- Folder for the audio and grammar resources.Resources/grammars -- Folder for Grammar Builder
(.gbuilder files) and GrXML files.
• Resources/grammars/<language code> -- Place language-specific grammars here (such as en-US
or es-MX folders).
• Resources/prompts -- Folder for prompts files.
Composer Help
77
Getting Started with Composer
• Resources/prompts/<language code> -- Place language-specific prompts here. If the application
language is changed mid-call using a Set Language block, prompts audio resource paths in these
language folders will be translated to the current language at run time.
• Scripts -- Folder for user-written ECMAScript. Custom JavaScript files (.js) can be included in a voice application by
placing the file(s) in the Scripts folder.
• src-gen -- Folder for the code generation VXML/SCXML files.
• upgradeReports -- When migrating IRD strategies into Composer, folder for migration reports. Also used for reports
as result of upgrading Projects and diagrams.
• src -- Folder for custom code such as backend logic pages written by the user. The ComposerPlayTreatments VXML
file is located here.
• Workflows -- Folder for storing all the workflow diagrams (.workflow files).
Static VXML/SCXML code is generated with the name of the Composer diagram file. The code will be saved in the
src-gen folder under the current active Project. The two types of Projects have different Project natures. Based on
these Project natures, different builders, editors and preferences are associated with the Projects. For example,
.NET Composer Projects and Java Composer Projects have different preferences for deployment since they are
deployed to different web/application servers.
Project Folders and Resources
Common Project folders and resources (Resources, src, include, db, and so on) do not change between .NET
and Java Projects. Project Export and deployment procedures related resources will differ between .NET and Java
Projects (bin folder for .NET and WEB-INF, META-INF folders for Java). For more information, see Migrating a
Composer Application From Lab to Production.
Sub-Directories
Composer 8.1.440.18 adds support for sub-directories:
Feature
Scope
Comments
Generate All
Project
Instead of selecting direct files from
the diagram folders, Generate All
now includes all the folders and files
recursively.
Locales Project property
Project
Used to update Project locales. Now
includes all the folders and files
recursively.
Command Line Code Generation
Project
Used to generate code for all the
diagrams. Now includes all the
folders and files recursively.
Command Line Upgrade
Project
Used to upgrade callflow, workflow,
and IPD diagram files. Now includes
all the folders and files recursively.
Composer Help
78
Getting Started with Composer
Feature
Scope
Comments
Command Line Publish
Project
Used to publish all IPD files. Now
includes all the folders and files
recursively.
Java Project Export
Project
Used to generate code while
exporting WAR files. Now includes all
the folders and files recursively.
Debugger
Diagram
Includes all the folders and files
recursively for code generation during
debugging.
Project Upgrade
Project
Used to upgrade callflow, workflow,
and IPD diagram files. Now includes
all the folders and files recursively.
SubModule handling
Diagram
Used to find the sub-module diagram
when using auto-synchronization of
parameters.
Project
Allows you to create new callflow/
workflow files under the selected subdirectories (right-click and New >
Other > Composer > Diagrams).
Previously, it was created only under
the callflows or workflows directory.
New callflow/workflow file creation
Folders Created When Upgrading Projects and Diagrams
The following additional folders may also be created in the Project Explorer:
• When upgrading to 8.1, a Project upgrade creates the folder ./WEB-INF/lib, copies files from ./lib to ./WEBINF/lib, then removes the ./lib folder from the Java Composer Project.
• archive -- For placing zipped original contents of the Composer Project (created during an upgrade).
• upgradeReports -- For upgrade reports (created during an upgrade).
Adding Files to an Existing Project
Composer recommends adding files (i.e., a prompts audio file) to an existing Project within Composer using the
following methods:
• Use the File > Import capability.
• Add directly from Windows Explorer and then refresh the resource list by pressing F5 in Composer’s Project Explorer.
• Drag and drop files onto Composer’s Project Explorer.
For out of sync files, please see troubleshooting topic Workspace Files Not in Sync.
Composer Help
79
Getting Started with Composer
Project Permissions
Composer Project upgrade and code generation processes need current\launching user WRITE permission to the
Composer Project Directories and Files. If you move Projects between Windows and OS X, these considerations
may apply:
WRITE permission:
In Windows 7 OS, Projects created using Mac OS needs Effective Permission to be set. To do that:
1. Open Windows Explorer and browse to Composer Project directory.
2. Right Click the Project folder and select the Properties option to open the properties dialog.
3. Select the Security tab and click the Advanced button.
4. In the Advanced properties dialog, select the Effective Permissions tab.
5. In the Effective Permissions tab, select the current User / Groups to grant Full Permission.
Also uncheck the Read-only and Hidden properties in the General tab for the Project and sub directories. Note:
While importing Composer Projects, if the Copy Projects into Workspace option is selected, the above mentioned
permissions needs to be set for the copied Project directory separately.
Using Composer Shared Subroutines
Typically subroutines are a part of the Project in which other diagrams call them. This makes the project selfcontained that can be deployed as a unit with minimum dependencies on other Projects. However, in some cases
subroutines may be used by multiple Projects but are required to be present in only one location in the workspace.
This need for residing in a single Project within the workspace is usually governed by the need to deploy to all
subroutines to a single location from where these subroutines may be referenced by multiple applications - similar
to how a service is exposed. It is recommended that subroutines be a part of the Project they are consumed in and
to enable this "sharing" via an SCM system (e.g., symbolic links in ClearCase; other system will support this
capability differently). If that is not an option, subroutines in Composer can be placed into a "common" Project, so
that multiple other Projects can access and reuse them. NOTE: In order to support the URL substitution from the
"$$" tokens, this feature requires Orchestration Server version 8.1.300.27 and above.
In our example, we will create two Projects:
• CommonProject – the Project containing subroutines
• MainProject – the Project containing the main diagrams, which will use the subroutines in CommonProject
Composer Help
80
Getting Started with Composer
After subroutines have been created in CommonProject, MainProject must be set to reference
CommonProject. This means that MainProject can use the subroutines files in CommonProject.
To do this, open the Project properties page of MainProject by right-clicking and selecting Properties. Select the
Project References page on the left-hand side, and enable the checkbox for CommonProject:
In a callflow in MainProject, you can create a Subdialog block which uses a Subcallflow diagram in
CommonProject:
Composer Help
81
Getting Started with Composer
Debug and Release Modes
When using shared subroutines, it may be helpful to separate the development process from the final deployed
application. During the development process, it is assumed that CommonProject resides in the same Workspace
as MainProject. However, in a production environment, a more complex service may be needed to host
subroutines.
Composer supports the concept of Debug and Release mode code generation. Using this mode flag, the same
Project can generate different code suitable for specific tasks. If the mode is set to debug, any references to
subroutines will be generated such that they point to subroutines in the local Workspace and therefore help during
debugging in the development phase. Once development is complete, the mode can be switched to Release so
that code generated from that point on will call subroutines specified via dynamic values that collectively are
expected to resolve to a URL at runtime pointing to a central location that hosts these subroutines.
Debug and Release mode can be set by Project properties dialog:
Composer Help
82
Getting Started with Composer
To apply Release Mode to shared subroutines development, open the Properties view of the Subdialog block in the
the callflow for MainProject. Enable the Show Advanced Properties option:
This will reveal a Release Mode URI property:
Note that any token delimited by “$$” in this property can be substituted at runtime. In this example,
SUBROUTINE_SERVICE and SUBROUTINE_VERSION can be set as parameters in the EnhancedRoutingScript
object, or as parameters in an IVRProfile. For example:
Composer Help
83
Getting Started with Composer
Once the Application is ready to deploy, set the Code Generate Mode of the Project to Release. This will generate
code that uses the Release Mode URI property value.
Project Properties
Selecting Properties from the Project menu opens a dialog box showing the properties of the selected Project or
of the Project that contains the selected resource.
Composer Help
84
Getting Started with Composer
Project Properties
Right-click a Project and select Properties to bring up a dialog box where you can view/update various Project
properties. This topic describes the various Project Properties pages. For more help on each property, select the
property and press F1. A help view appears on the right.
Resource
The Resource page contains general information on the selected Project. For information on UTF-8, see the VXML
File Preferences topic.
Composer Help
85
Getting Started with Composer
Builders
The Builders page indicates the Project type, It indicates whether the Project is a Java Composer Project, a .NET
Composer Project, or another type of Project.
Composer Help
86
Getting Started with Composer
Code Generation Mode
Used to determine whether a Project will be used in a production or development environment. See the Debug and
Release Modes topic.
Composer Help
87
Getting Started with Composer
Composer Callflow Options
See the GVP SessionID System Variable topic.
Composer Help
88
Getting Started with Composer
ICM Support
See the ICM Interaction Data Block topic.
Composer Help
89
Getting Started with Composer
Default Logging
See the Assign Common Block topic.
Composer Help
90
Getting Started with Composer
Locales
See the Locales topic.
Composer Help
91
Getting Started with Composer
Orchestration Options
See the
Orchestration Options topic.
Composer Help
92
Getting Started with Composer
Project Facets
Composer Help
93
Getting Started with Composer
Project Properties
See the Project Properties section of the Project Menu topic.
Composer Help
94
Getting Started with Composer
Project References
Use when a Project refers to other Projects in the workspace.
Prompt Management
Use this dialog box to configure the recording of prompts and to enable dynamic prompts.
Recording Prompts
See the Recording Prompts topic.
Enabling Dynamic Prompts
Starting with 8.1.440.18, Composer provides support to optionally include dynamic prompts supporting JavaScript
files in the generated VoiceXML. Use the Enable Dynamic Prompts property in the Prompt Management page to
enable or disable dynamic prompts. If enabled (default), use of dynamic prompt options in the Prompt or other
Composer Help
95
Getting Started with Composer
blocks will be validated during code generation. If disabled, callflow diagram code generation will exclude the
Javascript files related to the dynamic and custom Prompts (including locale JavaScript files).
For information on dynamic prompts, see:
• GVP 8.1 VoiceXML Help
• GVP 8.1 Legacy Genesys VoiceXML 2.1 Reference Manual
Composer Help
96
Getting Started with Composer
Reset IPD Publish Information
See the Publishing Updates topic.
Composer Help
97
Getting Started with Composer
Run Debug Settings
See the Debugging Routing Applications topic.
Composer Help
98
Getting Started with Composer
Task Repository
Composer Help
99
Getting Started with Composer
Task Tags
Use to specify or add a Task Repository.
Composer Help
100
Getting Started with Composer
Tomcat Deployment
See the Testing your Application topic.
Composer Help
101
Getting Started with Composer
Validation
See the Validation topic.
Composer Help
102
Getting Started with Composer
WikiText
Selecting Enable validation causes WikiText to validate wiki markup files in your project. This is done as part of the
Project build process, so it helps to have automatic building enabled (Preferences >Workspace >Build
Automatically). Validation is performed on all resources that match a wiki markup file extension. In addition,
validation includes any files for which the markup language setting was set, even if the file does not have a
registered wiki markup file extension.
Composer Help
103
Getting Started with Composer
Multiple User Environments
When more than one Composer user attempts to log into the same Workspace, the following message appears:
Workspace in use or cannot be created, choose a different one. Whenever Composer uses a
Workspace, it locks the Workspace so other Composer instances cannot access it. A Workspace is meant to be a
"private" development area, until the developer decides to share it with the team. It is not possible to share a single
Workspace among multiple users, so you need to set up (private) workspaces for each developer. To merge the
work of different developers together, use source control, which could be be SVN (Subversion), Git, or something
else. This is the best way to manage a Composer Project with multiple users working simultaneously on it, and
prevent the developers from interferring with each other's work.
You could consider the Subversion plugin in Composer as a connector to source countrol like SVN. To install the
Subversion plugin, see Software Updates Functionality (Plugins). Continuing with this example, once the
Subversion plugin is installed, the Project can be shared using source control. When you right-click on a Project,
you will find all the relevant options under the Team menu. For the first time, a Project needs to be shared with
source control. After this, there will be options on the Team menu.
Composer Help
104
Getting Started with Composer
Security Configuration
You have the option of configuring:
• A secure Transport Layer Security (TLS) connection between Composer and Universal Contact Server (UCS) during
application design when connecting to Context Services.
• A secure TLS connection when connecting to Configuration Server during design time.
You can also configure:
• A security banner that displays when users establish a Configuration Server connection.
• An inactivity timeout. If a Composer user has authenticated with Configuration Server, Composer times out after a
configurable number of minutes of inactivity.
• Both certificate-based and key-based authentication.
For information on configuring the above features, see the Genesys Security Deployment Guide.
Composer Help
105
Getting Started with Composer
Upgrading Projects and Diagrams
When deciding whether to upgrade, consult the Composer 8.1.x Release Note for a summary of new features and
other updates.
Important
Composer does not support upgrading diagram files from 8.0.4 versions to 8.1.2 or higher
versions. If a callflow/workflow diagram upgrade is required, first upgrade the Projects to 8.1.1
versions and then upgrade to 8.1.2 or higher versions.
Project Upgrade Report
Introduced in 8.1.400.33. Whenever a Project is imported into the workspace as part of the process of upgrading to
a newer version, you must perform a Project Upgrade. Composer applications will not work or work unpredictably
unless the Project is successfully upgraded. Right-click the Project and select Upgrade Composer Project. After
the upgrade completes, a Project Upgrade report appears in the design area. An example is shown below.
Composer Help
106
Getting Started with Composer
Important
Other than when pooling reusable subflows, accessing system resources (include/jsp) across
Projects is not supported.
Java Composer Projects
Java Composer Projects were referred to as Java Voice projects in earlier versions of Composer, such as
Composer Voice. While working with the current version of Composer, an upgrade is required for a previouslycreated Composer Project and Project diagrams. If you simply copy diagrams into a new Composer Project instead
of upgrading the Project itself, then you must use the diagram upgrade procedure as described below. Genesys
recommends that you create a dedicated workspace for 8.1 Projects and do not reuse the previously created
workspace. This will provide a clean separation between the two versions as well as ensure that a backup copy is
preserved for later reference or rollback.
Composer Help
107
Getting Started with Composer
Upgrade Summary
A summary of the Composer diagram upgrade process is as follows:
1. Obtain Composer 8.1 through Genesys Technical Support.
2. Uninstall the older version of Composer. Before uninstalling the older version of Composer:
• Make a copy of your Composer workspace folder (which contains all your Project files), as your
workspace may be deleted if it is located under the installation directory (C:\Program Files\GCTI\
Composer 8.1\workspace).
• Uninstall the older version of Composer.
3. Install Composer 8.1.
4. Upgrade at a Project level or at the Diagram level as described below.
Routing Upgrade Limitations
See Migrating IRD Strategies.
Project Upgrades
A Project-level upgrade will automatically apply diagram-level upgrades for all the diagram files directly residing
within the diagram (Callflows or Workflows) folder. As part of the upgrade process, Composer makes a back-up of
the Project and its files, which are saved under the archived folder; for example: ./JavaComposerProject/
archive/JavaComposerProject20100809184446388.zip
Note: If you are using your previous Workspace, importing Projects is not required. For a new Workspace folder,
Projects have to be imported.
To upgrade a Project when using a new Workspace folder:
1. Import an old Composer Project into Composer's Project Explorer view. From the menu, select File > Import.
2. In the Import dialog, navigate to General and double-click Existing Projects into Workspace.
3. Browse to the Composer Project location and select the Project(s).
4. Mark the checkbox Copy projects into workspace.
5. Click Finish.
6. In the Project Explorer, select the imported project and type F5 to refresh.
7. Right-click the imported Project and select Upgrade Composer Project from the context menu.
8. If the Project is upgraded, a message appears indicating that it is the current version. Otherwise, a prompt appears
asking if you would like to upgrade this Project. Click the Yes button to start the upgrade process.
Composer Help
108
Getting Started with Composer
9. View the upgrade report. Once the upgrade process is complete, Composer displays a report. The report is located in
the Reports folder of the Project; for example:C:\Work\Temp1\Gate3IPTest\Reports\
UpgradeReport_Gate3IPTest20090513155840979.html
Project Version Validation
Starting with Release 8.1.410.14, Composer validates the Project version during the Generate All and Upgrade
Project operations. Projects of a version lower than installed version are validated to upgrade before continuing
with these operations. Projects of a version higher than the installed version are not allowed to proceed with these
operations.
Example Scenarios
Scenario #1
• Create A JAVA/.NET Project in any older version of Composer.
• Uninstall the older version and install Composer 8.1.410.xx.
• Open Eclipse and import the Project.
• Right click the Project and select Generate All. The Finish button is disabled state. The Generate All dialog shows
Project is not up-to-date, upgrade the Project and then Generate Code. The error message is
Project version is not up-to-date. Project version should match the Composer IP
version.
Scenario #2
• Create A JAVA/.NET Project in any older version of Composer.
• Uninstall the older version and install Composer 8.1.410.xx.
• Open Eclipse, select the Project menu from the menu bar and select Build Automatically.
• Import the Project and open the Problems view. A warning message appears: The diagram version is not
up-to-date. Consider upgrading the diagram or the enclosing Project.
Scenario #3
• Create a JAVA/.NET Project in Composer 8.1.410.xx.
• Uninstall 8.1.410.xx and install an earlier Composer 8.1.410.xx version.
• Open Eclipse and perform a Generate All or Upgrade Project. A warning message appears: Mismatched project
version or Project version is higher than IP version.
Workbench Project builds will validate Project versions and show any error in the Problems View.
Intra Version Upgrades
Starting with Release 8.1.400.33, Composer Project and Diagram upgrades between minor versions are now
supported (for example, 8.1.400.26 to 8.1.400.32). This enables upgrading diagrams to the IP version from both the
major and minor versions. An intra-version upgrade for an IPD diagram to the 8.1.400.33 version works as follows:
Composer Help
109
Getting Started with Composer
1. IPD events are categorized to media-specific sets to improve the interaction handling. Please check the Events
property for more details on this and the items below.
2. The pre-defined sets are non-editable: Voice, Multimedia, and Ixn-less processing.
3. A Custom category can be used for customizing the events.
4. If Events were customized, an upgrade from 8.1.301.01 versions and later would use the Custom category. Older
versions will be chosen to one of the pre-defined sets based on the media-specific blocks used in the IPD diagram.
5. If Events are not customized, one of the predefined sets will be selected upon an upgrade.
6. Using the pre-defined sets provides improved future upgrades.
7. In the case where a Composer upgrade overwrites any custom changes, use the Load Last Revision option in the
Events dialog to reload the selected event to the last revision. This is applicable only for the Custom category.
Upgrade Error Message
After a Composer Project upgrade, the Project Upgrade Report may display the following error message: error
while updating the .studio_config.properties. In this case, permissions for
.studio_config.properties may be read-only or hidden. To resolve this issue, go to the file system and
check for the studio_config.properties file located under the Composer Project directory. Set the file
permissions so that the read-only and hidden file attributes are disabled/unchecked. Hint: To find where the current
Project directory is located, do the following:
1. Go to Composer's Project Explorer view.
2. Right-click the Composer Project.
3. From the shortcut menu, select Properties > Resource and look for Location., e.g., Location: C:\Program Files\
GCTI\Composer 8.1\workspace\JavaComposerProject
Diagram File Upgrade
Important
Composer does not support upgrading diagram files from 8.0.4 versions to 8.1.2 or higher
versions. If a diagram upgrade is required. first upgrade the Projects to 8.1.1 versions and then
upgrade to 8.1.2 or higher versions.
In Composer 8.0.2 and later, diagrams for voice applications are called callflow diagrams whereas in earlier
versions of Composer they were called studio_diagrams. Follow the steps below if you have only copied older
diagram files to a current version of Composer Project (or to an already upgraded Composer Project).
1. In Composer's Project Explorer, select the Project destination folder to where you want the files to be imported, such
as the Callflows or Workflows Project folder.
2. Right-click and select Import.
Composer Help
110
Getting Started with Composer
3. In the Import wizard, select the diagram files to import.
4. After the import operation completes, right-click on the imported diagram file and select the upgrade option: Upgrade
Callflow Diagram or Upgrade Workflow Diagram.
Changes as a Result of Upgrading
It is important to note the following:
• When upgrading to 8.1.1, references to internal variable names may have to be edited manually. See Variables Project
and Workflow, Internal Variables Naming for details and examples. It is recommended that internal variables such as
DB Data block database result variables not be used; instead, create User variables to store these results.
• A Project upgrade does not upgrade any custom blocks. When Composer is launched, it checks if any custom blocks
need upgrading and upgrades them. There are no manual steps involved.
• When upgrading to 8.0.4/8.1, Project upgrading creates the folder ./WEB-INF/lib, copies files from ./lib to
./WEB-INF/lib, then removes the ./lib folder from the Java Composer Project.
• When upgrading from 8.0.2, the Entry block variable _COMPOSER_WSSTUBBING is renamedCOMPOSER_WSSTUBBING.
• When upgrading from 8.0.1 to 8.0.2, the Studio Diagram file extension changes from .studio_diagram to
.callflow. For example: MyDiagram.studio_diagram changes to MyDiagram.callflow.
• To avoid any resulting file name conflict, the diagram upgrade will append a timestamp to the file name only if a
.callflow file with the same file name already exists in the same folder; for example:
Main_2010_02_19_123010.callflow. The Timestamp is of the following format: yyyy_MM_dd_HHmmss
• Starting with 8.0.2, the following callflow blocks contain a mandatory Output Result property: Menu, DB Input,
Grammar Menu, Input, Get Access Number, Transfer, Statistics and Record. You supply this property by selecting a
variable. Since this property is mandatory; if not supplied, an error occurs in the Problems View when validating the
callflow.
• Upgrading to 8.0.2 or higher automatically populates this variable. For example, if the block is a Menu block and the
block's name is Main_Menu, upgrading will add a Main_Menu variable to the Entry block (as if you added it manually)
and will set the Output Results property to this variable.
• The GVP Next Generation Interpreter does not support the error.badfetch.badxmlpage event. If upgrading a callflow
application from an earlier version that listed this event under Supported in its Entry block Exceptions dialog box, you
will need to modify that Entry block by removing that event under Supported in the Exceptions dialog box.
• Composer workflow and callflow diagrams do not directly store diagram grid information. This preference is
workspace-specific. If you are using a new workspace, you can set this value prior to upgrading Projects and
diagrams so that the grid information does not change during the upgrade process.
Note: Workspace preferences can be exported and imported from File > Export or Import > General Preferences.
Command Line Code Generation
A command line option is available in Composer to generate code for all diagrams for all Projects in a Workspace.
Composer Help
111
Getting Started with Composer
eclipse.exe -application com.genesyslab.composer.voice.generator.commandline.app nosplash -console -consoleLog -data .\workspace -options
Where:
• You open the command prompt as Administrator.
• You execute the command line application under where eclipse.exe is located.
• .\workspace is the relative path to the workspace from where the command line is run. You can specify an absolute
path.
• Code will be generated for all the diagram files irrespective of the options specified.
• At least one of the below options is specified.
Options
Option
Description
-p
Upgrade the Projects in the
workspace including common and
diagram files. Mutually exclusive with
-u option (recommended option).
–u
Upgrade diagram files only. Mutually
exclusive with -p option.
-d
Deploys the .NET Project to the IIS
Web Server. Port number must be
specified, e.g., -d 80. For .NET
Projects, open the Command prompt
as Administrator.
-j
Deploys the Java Project to the
Tomcat web server. Port number
must be specified, e.g., -d 8090.
For Tomcat admin role access login
should be admin/admin.
-i
Update the IPD diagrams Events
Property to Voice default set.
-c
Publish IPD to Configuration
Database. Publishes to default
Tenant. Parameters:
$CMEApplicationName$
$HostIP$ $CmePort$
$UserName$ $Password$
Comment
Release 8.1.410.14 adds support
publishing IPDs at the command line:
Notes
• Eclipse should not be running. This command line will launch a headless instance of Eclipse that will exit once code
generation is complete.
• Eclipse.exe should be executed from its installed location.
Composer Help
112
Getting Started with Composer
• .\workspace is the relative path to the Workspace that contains your Projects for which code should be generated.
This will generate code for all supported types of diagrams:
• callflow : VXML
• sub-callfow : VXML
• workflow : SCXML
• sub-workflow : SCXML
• interaction process diagram : SCXML
Examples:
Project Upgrade Report
eclipse.exe –application com.genesyslab.composer.voice.generator.commandline.app nosplash -console -consoleLog -data .\workspace –p )
Publishing IPDs
eclipse.exe -refresh -application
com.genesyslab.composer.voice.generator.commandline.app -nosplash -console consoleLog -data “WorkspacePath” -c $CMEApplicationName$ $HostIP$ $CmePort$
$UserName$ $Password$
Composer Help
113
Getting Started with Composer
Working with Diagram Layouts
Composer routing workflow and voice callflow diagrams follow a vertical layout scheme by default. The in port of a
block is always positioned at the top of the block while one or more out ports are positioned at the bottom edge of
the block. Exception ports are displayed on the left edge. Following this vertical layout can quickly exceed the
available vertical screen space. The Outline view can then be used to determine which part of a large diagram is
being displayed currently and to quickly navigate to a different part by clicking the outline view.
It is possible to follow a horizontal layout where the in ports and out ports can be manually re-positioned to any
edge of the block and lose some features. For example, elbowed (bent) connectors and individual ports may not
display on the block making it difficult to know how many unconnected ports are present and also to connect out
ports out of order. See Show Connection Ports for more details. Please note that switching between the default
vertical layout and the more flexible horizontal layout will rearrange connection links and manual rearrangement
may be necessary. While working with diagrams, you may run into odd looking links. The figures below show some
of these and lists suggestions on how to fix them.
Composer Help
114
Getting Started with Composer
To make it easier to align blocks, Composer diagrams have enabled "just in time" guides. They show up when a
block is dragged near another block, when blocks are aligned, and help for about a second. To place the block in an
aligned position, drop the block when the guides confirm the block is aligned.
Composer Help
115
Getting Started with Composer
Accessing the Editors and Templates
Composer editors are embedded/integrated within the user interface and are made available to you whenever a
.scxml, .vxml, .ccxml, .grxml, or .jsp file is created or accessed within Composer.
Creating a New File
In Composer or Composer Design perspective, create a new VoiceXML, SCXML, or CallControlXML file as
follows:
• Select File > New > Other > Composer > Others > Others> Others.
• Select the file type, such as SCXML.
• Select the parent folder; usually an existing Project.
• Enter a name for the file.
• If applicable, click Advanced to link to the file system and use an existing file.
• Click Finish.
Using an Existing Template
• Select File > New > Other > Composer > Others.
• Select the file type.
• Select the parent folder; usually an existing Project.
• Enter a name for the file.
• If applicable, click Advanced to link to the file system and use an existing file.
• Click Next.
• Select the template.
• Click the Use SCXML Template checkbox.
• Click Finish.
The editor opens with your new file. When working with XML files, the view contains Source and Design tabs. All
editor functions described at the top of this topic are available to you. The appropriate Composer editor also opens
whenever you open an existing .vxml, .ccxml, .grxml, .aspx, or .jsp file, whether previously created as described
above, or previously imported into Composer.
Composer Help
116
Getting Started with Composer
Open an Existing File
Open an existing file as follows:
• Select File > Open File.
• Navigate to the file to open, OR
Open a Composer Project's src or src-gen folder in the Project Explorer, then double-click the file to open it in
the editor.
Creating a Custom Code Template
When writing manual SCXML/VXML/CCXML/GRXML code in the file editors, you may run into code that becomes
repetitive. You may consider creating a code template to avoid retyping this block of code. Creating templates will
improve the speed and consistency for writing code. The following steps show how to create a code template.
• Select Window > Preferences.
• In the Preferences dialog box, navigate through the Composer category, and expand the file type (VXML Files /
CCXML Files / GRXML / SXCML Files) in which you want to add your template. Then select the Templates section.
For example, select VXML Templates.
• Click the New button to add a new code template.
• Fill in the fields for the new template. The Context drop down box specifies at what context level you want the code
template to appear as a context sensitive help.
• Click the OK button when finished.
XML File Preferences
You can also set XML File Preferences: Window > Preferences > XML > XML Files. When specifying Encoding
formats in the XML Preference page: encoding formats are applicable only for new File creation using the Template
option: (File > New > XML > XML File > Create XML File from an XML Template > Select XML Template). This
applies only to new XML, VXML, CCXML and SCXML files. Existing files within the Project will not get impacted.
Creating a Backend JSP File
• Create a new JSP file by selecting File > New > Backend JSP file.
• In the Create Backend JSP File folder, navigate to the src folder within the Java Composer Project in which the
Backend JSP file belongs.
• Type a name In the File Name field.
• Click Finish.
Composer Help
117
Getting Started with Composer
The Editor opens with a JSP file template. You can see your new file in the src folder of your Java Composer
Project in the Project Explorer. A template is provided when you create a new Backend JSP file in Composer. You
implement a performLogic method as a JSON object, store a result and return it to the voice application if desired.
You have the flexibility to enter any valid JSP code that you wish.
Creating a Backend ASP .NET File
• Create a new ASP.NET file by selecting File > New > Backend ASPX file.
• In the ASPX File folder, navigate to the include folder within the .NET Composer Project in which the Backend ASPX
file belongs.
• Type a name In the File Name field.
• Click Finish.
The Editor opens with an ASPX file template. You can see your new file in the include folder of your .NET
Composer Project in the Project Explorer. A template is provided when you create a new Backend ASPX file in
Composer. You implement a performLogic method as a JSON object, store a result and return it to the voice
application if desired. You have the flexibility to enter any valid ASP.NET/C# code that you wish.
Composer Help
118
Getting Started with Composer
Keyboard Shortcuts
When working in Composer, you can use the following keyboard shortcuts. Click in the Package Explorer on the
left. Then use the keyboard shortcuts shown below.
Ctrl+Alt+P
Create new interaction process
diagram
Create Interaction Process Diagram
Wizard opens
Ctrl+Alt+J
Create new Java Composer project
Wizard for Java Composer project
opens
Ctrl+Alt+T
Create new .NET Composer project
wizard for .NET Composer project
opens
Ctrl+Alt+O
Create a new voice callflow
Callflow Diagram wizard opens
Ctrl+Alt+R
Create a new routing workflow
Workflow Diagram wizard opens
Alt+I+C
Open dialog box for connecting to
Configuration Server
Connect to Configuration Server
dialog box opens
Alt+I+D
Disconnect from a connected
Configuration Server
A connected Configuration Server is
disconnected
Ctrl+Alt+C
Generate all
Brings up the Generate All wizard.
Creates properly formatted VoiceXML
(callflows) or SCXML (workflows)
diagram files for the Project.
Alt+M
Open Prompt Manager perspective
Prompt Manager perspective opens
Alt+P+P
Open Project properties
Properties dialog box opens
Alt+H
Open Composer Help
Help menu appears. Select Help
Contents.
Alt+H+C
Open Cheat Sheet
Help menu appears. Select Cheat
sheets.
Alt+H+A
Open About Composer
About Composer dialog box opens
Ctrl+Alt+D
Open Database Connection Profiles
Database Connection Profiles opens
Ctrl+Alt+S
Open Statistic Builder
Statistic Builder opens.
Space
To toggle a check box
The check box mark toggles on/off
Alt+A
Jump to an Add button in a wizard
The Add button is selected
Alt+D
Jump to a Delete button in a wizard
The Delete button is selected
Alt+R
Jump to a Remove button in a wizard
The Remove button is selected
ALT+U
Jump to an UP button in a wizard
The UP button is selected
ALT+W
Jump to a DOWN button in a wizard
The DOWN button is selected
Alt+T
Jump to a Test/Preview button in a
wizard
The Test/Preview button is selected
Alt+R/Alt+W
Jump to a Browse button in a wizard
The Browse Event button is selected
Composer Help
119
Getting Started with Composer
Alt+B
Jump to a Back button in a wizard
The Back button is selected
Alt+N
Jump to a Next button in a wizard
The Next button is selected
Alt+F
Jump to a Finish button in a wizard
The Finish button is selected
Composer Help
120
Getting Started with Composer
Default Logging
For information on setting Default Logging, see the figure in topic Project Properties.
Composer Help
121
Getting Started with Composer
IRD Functionality Included in Composer
Composer enables you to create SCXML-based routing applications to run on the Universal Routing 8.x platforms
and, as such, it includes functionality that was previously provided through Genesys Interaction Routing Designer
(IRD). The information below is provided for existing Genesys customers transitioning to Composer, who are
familiar with creating strategies in IRD.
Composer Blocks and IRD Objects
Composer refers to the fundamental element of a workflow as a block; whereas in IRD documentation, this element
is referred to as an object. The tables below group IRD objects based on their IRD toolbar category name and point
to the corresponding functionality in this release of Composer. Summary information is presented below.
• Learn about the differences between Composer and Interaction Routing Designer, which has historically been used to
create routing applications.
• See the Composer Quick Start for how to create a simple routing strategy, attach data that will appear on the agent
desktop, and route to the preferred agent.
Data & Services
IRD Object Name
Composer Block Name
Description
Database Wizard
DB Data
DB Data retrieves information from
the database. Uses a Query Builder.
Web Service
Web Service
Invokes Web Services. GET, POST
and SOAP over HTTPS are
supported.
Web Request
Invoke any supported HTTP web
request or REST-style web Service.
See sample: Routing Based on Web
Request.
Also see Composer's Server Side Blocks.
Miscellaneous
IRD Object Name
Composer Block Name
Description
Assign
Assigns a computed value/
expression or a literal value to a
variable. Variables are defined in
Assign
Multi-Assign
Composer Help
122
Getting Started with Composer
the Entry block. Capable of multiple
assignments.
Call Subroutine
Subroutine
Creates reusable sub-modules.
Entry
Entry
Sets global error (exception)
handlers. Defines global variables
(see Variables section below).. All
routing strategy diagrams must start
with an Entry block.
Exit
Exit
Terminates the strategy and returns
control back to calling workflow in
case of a subroutine.
Error Segmentation
Multiple error output ports can be
created in Composer blocks based
on each block's Exception property.
ECMAScript
Builds an ECMAScript expression
using the Expression Builder. Many
URS functions are available as
Genesys Functional Modules
described the Orchestration Server
Documentation Wiki can invoke
multiple functions.
If
Assign, Branching, ECMAScript
blocks all open Expression Builder
Expression Builder can be used to
create IF expressions.
Multi-Attach
ECMAScript
Can be used for attaching data to an
interaction.
Function
Multi-Function
Also see Composer's Routing Flow Control Blocks.
Routing
IRD Object Name
Composer Block Name
Description
Target
Routes an interaction to a target,
which can be Agent, AgentGroup,
ACDQueue, Place, PlaceGroup,
RoutePoint, Skill, or Variable. Skill
target uses Skill Expression Builder.
Percentage
Target
Statistics Order property in Target
block, lets you perform percentage
allocation. Also see sample: Routing
Based on Percent Allocation.
Default
Default Route
Routes the interaction to the default
destination. Can be overrridden by
the Set Default Route block.
Selection
Routing Rule
Composer Help
Orchestration Server 8.1 does not
support service level routing rules.
123
Getting Started with Composer
Orchestration Server 8.1 does not
support switch to strategy routing
rules.
Switch to Strategy
Force Route
Not exposed as a routing rule in
Composer.
Target
Although statistical routing rules are
not yet supported as in IRD's
Statistics routing object, users can
use the Target object Statistic
property to route based on the value
of a statistic. A Statistics Manager
and Builder let you create your own
statistics from URS predefined
statistics.
IRD Object Name
Composer Block Name
Description
ANI
Branching
See Your First Application: DNIS
Routing for an example.
DNIS
Branching
See Your First Application: DNIS
Routing for an example.
Date
Branching
See the sample Routing Based on
Date & Time.
Day of Week
Branching
See the sample Routing Based on
Date & Time.
Time
Branching
See the sample Routing Based on
Date & Time.
Branching
For classification segmentation, an
ECMAScript function determines if a
particular category name or ID exists
in the array of category objects
represented by an application
variable.
Branching
Use as a decision point in a workflow.
It enables you to specify multiple
application routes based on a
branching condition.
Force Route
Statistics
Also see Composer's Routing Blocks.
Segmentation
Classification Segmentation
Generic
Also see:
Composer Common Blocks
Context Services Blocks.
Composer Help
124
Getting Started with Composer
Voice Treatment
See Composer Equivalent to IRD Treatment.
eServices Multimedia
See Composer Equivalent to IRD Multimedia.
Outbound
See Outbound Common Blocks
Context Services
See Context Services Blocks
Business Process
See Interaction Processing Diagrams Overview and Interaction Process Diagram Blocks. Reusable Objects
• IRD List Object: See Composer's List Object Manager.
• IRD Variable List Dialog Box: See Entry block Variables property.
In contrast to IRD, which defines variables in a special dialog box outside of the strategy, Composer defines both
workflow and Project variables.
Composer Help
125
Composer Menus
Composer Menus
Tip
This help wiki discusses the menu items that you use for Composer. Other menu items are part of
the Eclipse integrated development environment.
This section discusses Composer's top-level menus.
• FileMenu
• EditMenu
• DiagramMenu
• NavigateMenu
• SearchMenu
• ProjectMenu
• ConfigurationServerMenu
• RunMenu
• Window_Menu
• Help_Menu
• CanvasShortcutMenu
• PaletteGroupMenu
Composer Help
126
Composer Menus
File Menu
The commands active in the File menu change depending on the object you have selected, the perspective, and
where you are within the perspective. Commands available from the File menu are described below. Also see the
Hiding File Types topic.
Select New > Other, which can be a new:
• Java Composer Project
• .NET Composer Project
• Project
• Callflow Diagram
• Workflow Diagram
• Grammar builder file
New
• VoiceXML file
(Alt+Shift+N)
• SCXML file
• GrammarXML file
• CallControlXML file
• Backend JSP file
• Folder
• File
You can also select Example... or Other... (for example, to create a new
Interaction Process Diagram). Both of these bring up the Select a Wizard
dialog box.
Open File
Close
(Ctrl+W)
Opens the selected object.
Closes the current callflow or workflow diagram in the
canvas.
Close All
(Ctrl+Shift+W)
Closes all open elements in the workbench area.
Save
(Ctrl+S)
Save As
Saves the selected object.
Saves the selected object under another name
Save All
(Ctrl+Shift+S)
Composer Help
Saves all files in all open editors.
127
Composer Menus
Revert
Reverts to an earlier saved version of a file selected from
the History.
Move
Moves Project resources.
Rename
Renames Project resources.
Refresh
Reloads the configuration.
Converts line delimiters within the callflow design canvas
to one of the following:
Convert Line Delimiters To
• Windows (default)
• Unix
• MacOS 9
Print
Prints the selected object(s) within the callflow design
canvas
Page Setup
Brings up a dialog box where you can specify to use
workplace settings or diagram settings. You can also
change orientation, units, size, and the margin as well as
configure workplace settings.
Print Preview
Previews the output before printing.
Switch Workspace...
Browses for/selects a different workspace storage area.
Changes the set of projects and resources that you are
working on.
Restart
Restarts Composer.
Brings up a wizard that leads you through the process of
importing various types of files.
Import
Expand Composer to import from the file systems, such an IRD strategy
or a Realtime Debugger Launch Configuration.
Export
Brings up a wizard that leads you through the process of
exporting various types of files.
Properties
Shows properties for the selected resource (such as a
Project). When a Project is selected, includes the
Deployment property.
Exit
Exits Composer.
Composer Help
128
Composer Menus
Edit Menu
Use the Edit menu to move around within the current application; cut, copy, paste, and delete blocks from the
displayed callflow or workflow; find individual blocks within the callflow; and open the Properties dialog box for a
selected block. Edit menu items include standard Windows and Eclipse edit functions:
Undo
(Ctrl+Z)
After you perform an action on an object, the Undo
command becomes Undo <action>. For example, Undo
Deleting appears after you perform a deletion.
Redo
Select Redo <action> after using Undo <action> to go
back to the most recent edit.
Cut
Removes selected object(s) and moves the objects to the
clipboard.
Copy
Copies the selected object(s) to the clipboard.
Paste
Moves copies of selected object(s) from the clipboard to
the selected location.
Delete
Deletes the selected object(s).
Select All
Selects all text or objects in the currently active view or
editor.
Find/Replace
Use in text files, such as JSP, VXML, CCXML, and
SCXML files. Place your cursor inside the file and then
select from Edit menu. Not used for callflows or
workflows. Brings up the Find/Replace dialog box.
Add Bookmark
When the cursor is positioned on a file in the Project
Explorer, opens the Bookmark Properties window. A
bookmark helps you quickly navigate to a frequently used
resource. You can place an "anchor" either on a resource
within the Workbench, or at a specific line within a file, by
creating a bookmark. Then you can use the Bookmarks
view to return to those files quickly. The Bookmarks view
(Window > Show View > Bookmarks) displays all
bookmarks that you have created.
Add Task
When a Project is selected in the Project Explorer, opens
a properties dialog box. You can associate tasks with an
editable resource, for instance to remind yourself to
update a line of source code later.
Composer Help
129
Composer Menus
Diagram Menu
This menu contains a number of standard diagram-related menu commands that can be used within the Project
Explorer view and callflow/workflow diagram canvas.
Font
Invokes the system font dialog used to modify the font
associated with the selected diagram element
Fill Color
Applies a color to the selected diagram element's interior
Line Color
Applies a color to the selected diagram element lines
Modifies the style of the selected diagram connector
element to one of the following:
• solid
Line Type
• dash
• dot
• dash dot
• dash dot dot
Modifies the width of the selected diagram connector to
one of the following:
• one point
Line Width
• two points
• three points
• four points
• five points
Modifies either the source end or the target end of the
arrow connector element to one of the following:
Arrow Type
• no arrow
• solid arrow
• open arrow
Changes the diagram connector to one of the following:
• Rectilinear Style Routing
Line Style
• Oblique Style Routing
• Tree Style Routing
Select
Composer Help
Select all diagram elements, all shapes, or all connectors
130
Composer Menus
Arrange
Applies a layout to all diagram elements, or to the
selected ones only
Align
Aligns all selected diagram elements to: the left, the right,
the center, the top, the bottom, or the middle of the
selection
Text Alignment
Aligns the text left, right, or center
Order
Re-orders the selected diagram elements to: the front, the
back, forward once, or backward once
Auto Size
Resets the size of the selected diagram elements to the
default size, usually just enough to see an embedded
label within the shape
Make Same Size
Sets the size of the selected diagram elements to the size
of the last selected element, either horizontally, vertically,
or both
Does one of the following:
• sort/filter Compartment items
Filters
• show/hide Compartment items
(all Compartments or named Compartments only). Compartment items
refer to Composite attributes within your editor, which can optionally be
collapsed or expanded.
Shows or to hides various diagram features:
• ruler
View
• grid
• page breaks
Controls the snap to grid behavior.
Changes the diagram magnification to one of:
• in
• out
• 100%
Zoom
• To Fit
• To Width
• To Height
• To Selection
Apply Appearance Properties
Generate Code
(Alt+G)
Composer Help
Copies various appearance properties, such as fill color,
of the first selected diagram element to the other selected
ones
Creates a properly-formatted VoiceXML file from a
callflow diagram built with Composer. Static VXML pages
(pure VXML code) are generated in the src-gen folder of
131
Composer Menus
the Composer Project. This selection is enabled when the
Project is selected in the Explorer after a new edit.
In the case of a routing workflow, check the Problems tab for errors and
fix any problems. If code generation succeeds, click OK at the
confirmation dialog box. The SCXML code is generated in the src-gen
folder.
Import Custom Blocks
Allows you to import a custom block that was previously
exported so the block can be shared across multiple
users/installations of Composer.
Export Custom Blocks
Allows you to export a custom block so the block can be
shared across multiple users/installations of Composer.
Validate
(Alt+V)
Composer Help
Validates the diagram that is open for completeness and
accuracy. This selection is enabled when the Project is
selected in the Explorer after a new edit.
132
Composer Menus
Navigate Menu
This menu allows you to locate and navigate through resources and other artifacts displayed in the Workbench. The
Navigate menu differs from the Find/Replace command on the Edit menu. Instead of entering text to find, the
Navigate menu uses directional commands. The Navigate menu contains the following items:
Go Into
Refocuses the active view so that the current selection is
at the root. This allows web browser style navigation
within hierarchies of artifacts.
Refocuses the active view to one of the following:
• Back: Displays the hierarchy that was displayed
immediately prior to the current display. For example,
if you Go Into a resource, then the Back command in
the resulting display returns the view to the same
hierarchy from which you activated the Go Into
command. This command is similar to the Back
button in an HTML browser.
Go To
• Forward: Displays the hierarchy that was displayed
immediately after the current display. For example, if
you've just selected the Back command, then
selecting the Forward command in the resulting
display returns the view to the same hierarchy from
which you activated the Back command. This
command is similar to the Forward button in an HTML
browser.
• Up one level: Displays the hierarchy of the parent of
the current highest-level resource.
Show In
(Alt+Shift+W)
Finds and selects the currently selected resource in
another view. If an editor is active, these commands are
used to select the resource currently being edited in
another.
Next
Navigates to the next item in a list or table in the active
view. For example, when the search results view is active,
this navigates to the next search result.
Previous
Navigates to the previous item in a list or table in the
active view. For example, when the search results view is
active, this navigates to the previous search result.
Last Edit Location
Jumps to the last edit position
Back
Navigates to the previous resource that was viewed in an
editor. Analogous to the Back button on a web browser.
Forward
Navigates to undo the effect of the previous Back
command. Analogous to the Forward button on a web
browser.
Composer Help
133
Composer Menus
Search Menu
Search results are displayed in the Search view, which appears if not previously present. The Search menu
contains the following items:
Search
Opens the Search dialog box, where you can perform file,
text or Java searches. Java searches operate on the
structure of the code. File searches operate on the files by
name and/or text content. Java searches are faster, since
there is an underlying indexing structure for the code
structure. Text searches allow you to find matches inside
comments and strings.
File
Opens the Search dialog box. If it is not already selected,
select the File Search tab. In the Containing text field,
type the search string. For a Java search, make sure that
the File name patterns field is set to *.java. The Scope
should be set to Workspace. Then click Search. Note: To
find all files of a given file name pattern, leave the
Containing Text field empty.
Text
After selecting text, searches a workspace, a project, a
file, or a working set. Working sets group elements for
display in views or for operations on a set of elements.
They restrict the set of resources that are displayed. If a
working set is selected in the navigator, only resources,
children of resources, and parents of resources contained
in the working set are shown.
Composer Help
134
Composer Menus
Project Menu
The Project menu contains the following items:
Open Project
Opens the currently selected Project(s). The selected
Project(s) must currently be closed for this command to
be available.
Close Project
Closes the currently selected(s) Projects. Closing a
Project will remove all of that Project's state from memory,
but the contents on disk are left untouched.
Build All
(Ctrl+B)
Performs an incremental build on all Projects in the
Workbench. This command builds (compiles) all
resources in the Workbench that are affected by any
resource changes since the last incremental build. This
command is only available if auto-build is turned off. Autobuild is turned off via the Build Automatically menu option
or from the General > Workspace preference page.
Build Project
Performs an incremental build on the currently selected
Project. This command builds (compiles) all resources in
the Project that are affected by any resource changes
since the last build. This command is only available if
auto-build is turned off. Auto-build is turned off via the
Build Automatically menu option or from the General >
Workspace preference page.
Build Working Set
Performs an incremental build on a working set. This
command builds (compiles) all resources in the working
set that are affected by any resource changes since the
last build. This command is only available if auto-build is
turned off. Auto-build is turned off via the Build
Automatically menu option or from the General >
Workspace preference page.
Clean
Discards all previous build results. If autobuild is on, then
this invokes a full build.
Build Automatically
Toggles the auto build preference on and off. The autobuild preference is also located on the General >
Workspace preference page.
Properties
Opens the Project Properties dialog box as described
below.
Project Properties
Selecting Properties from the Project menu opens a dialog box showing the properties of the selected Project or of
the Project that contains the selected resource.
Composer Help
135
Composer Menus
Run Menu
• See the Debugging voice applications and Debugging routing applications topics for supported functionality.
The Run Menu contains all of the actions required to run, debug, step through code and work with breakpoints.
Different parts of the menu are visible at different times, as each perspective can be customized to show only
specific capabilities. The Run menu contains the following items:
Resume
Resumes execution of the currently selected Debug
target.
Suspend
Halts the execution of the currently selected thread in a
debug target. Once the selected thread is suspended, you
can then examine it.
Terminate
Terminates the selected debug target.
Step Into
[Disabled for GVP Debugger]
Step Over
Steps over the highlighted statement. Execution will
continue at the next line either in the same method or (if
you are at the end of a method) it will continue in the
method from which the current method was called.
The cursor jumps to the declaration of the method and selects this line.
Step Return
[Disabled for GVP Debugger]
Run to Line
[Disabled for GVP Debugger]
Use Step Filters
(Shift+F5)
Toggles step filters on and off. When on, all step functions
apply step filters.
Run
Re-launches the most recently launched application, or
launches the selected resource or active editor depending
on the launch operation preference settings found on the
Run/Debug > Launching preference page.
Debug
Re-launches the most recently launched application under
debugger control, or launches the selected resource or
active editor depending on the launch operation
preference settings found on the Run/Debug > Launching
preference page.
Run History
Displays a submenu of the recent history of launch
configurations launched in run mode
Run As
When a callflow is selected, displays Run Callflow. In the
Run mode, call traces are provided and the application
continues without any breakpoints. Note: Run on Server is
an Eclipse feature and is not used by Composer.
Run Configurations
Used for debugging callflow diagrams. Opens the Run
Configurations dialog box that lets you create, manage,
and run launch configurations of different types.
Composer Help
136
Composer Menus
Debug History
Debug As
Displays a submenu of the recent history of launch
configurations launched in debug mode.
Displays a sub menu of registered debug launch
shortcuts. Launch shortcuts provide support for
workbench or active editor selection sensitive launching.
Note: Debug on Server is an Eclipse feature and is not used by
Composer.
Debug Configurations
Used for debugging callflow diagrams. Opens the Debug
Configurations dialog box that lets you create and modify
launch configurations and debug applications.
External Tools
Displays external tools that allow you to configure and run
programs, batch files, Ant buildfiles, and others using the
Workbench. You can save these external tool
configurations and run them at a later time. Output from
external tools is displayed in the console view. Selecting
External Tools presents the following sub-menus: Run As,
External Tool Configurations, Organize Favorites.
Create URL Breakpoint
Creates a breakpoint, which suspends the execution of a
workflow at the location where the breakpoint is set.
Toggle Breakpoint
Appears in Debugging perspective. Select to suspend the
execution of a program at a particular location in a
callflow. When a breakpoint is encountered during
execution of a program, the program suspends and
triggers a SUSPEND debug event with BREAKPOINT as
the reason.
Toggle Line Breakpoint
Select to set a breakpoint on an executable line of a
program.
Use when working with types that have no source code
(binary types).
Toggle Method Breakpoint
Open the class in the Outline View, and select the method where you
want to add a method breakpoint. Select Toggle Method Breakpoint to
have a breakpoint appear in the Breakpoints View. If source exists for
the class, then a breakpoint also appears in the marker bar in the file's
editor for the method that was selected. While the breakpoint is enabled,
thread execution suspends when the method is entered, before any line
in the method is executed.
Toggle Watchpoint
Appears in GVP Debugging perspective. You must select
a Java field object to use this command. Use after you
have created a watchpoint on the currently selected field.
Whenever that field is accessed or modified, execution
will be suspended. If the selected field already has a
watchpoint, selecting this command will remove it.
Skip All Breakpoints
Select to mark all breakpoints in the current view as
skipped. Breakpoints marked as skipped will not suspend
execution.
Remove All Breakpoints
Select to remove all breakpoints from the Breakpoints
View.
Composer Help
137
Composer Menus
Configuration Server Menu
URS applications may be developed either:
• With a connection to Configuration Server
• Or in an offline mode, without connecting to Configuration Server
Connect
Select to connect to Configuration Server.
Disconnect
Select to disconnect from Configuration Server
Composer Help
138
Composer Menus
Window Menu
The Window menu allows you to display, hide, and otherwise manipulate the various views, perspectives, and
actions in the Workbench. The Window menu contains the following items:
New Window
Opens a new workbench window with the same
perspective as the current perspective. The Composer
perspective is the default for building your application.
New Editor
Opens an editor based on the currently active editor. It will
have the same editor type and input as the original.
Open Perspective
Opens a new perspective in this workbench window
Show View
Displays the selected view in the current perspective.
Views support editors and provide alternative
presentations as well as ways to navigate the information
in your workbench. For example, the Project Explorer and
other navigation views display projects and other
resources that you are working with. You can configure
how views are opened on the Window > Preferences >
General > Perspectives preference page.
Customize Perspective
Opens the Customize Perspective dialog box. The
Shortcuts tab lets you select shortcuts you want added as
cascade items to submenus. The Commands tab lets you
select command groups that you want added to the
current perspective.
Save Perspective As
Saves the current perspective thereby creating your own
custom perspective. You can open more perspectives of
this type using the Window > Open Perspective > Other
menu item once you have saved a perspective.
Reset Perspective
Changes the layout of the current perspective to its
original configuration
Close Perspective
Closes the active perspective
Close All Perspectives
Closes all open perspectives in the workbench window
Displays the following submenu and shortcut keys:
• Show System Menu (Alt+-): Shows the menu that is
used for resizing, closing or pinning the current view
or editor
Navigation
• Show View Menu (Ctrl+F10): Shows the drop down
menu that is available in the toolbar of the active view
• Quick Access (Ctrl+3): Shows a listing of available
quick access categories
• Maximize active view or editor (Ctrl+M): Causes the
active part to take up the entire screen, or if it already
is, returns it to its previous state
Composer Help
139
Composer Menus
• Minimize active view or editor: Causes the active part
to be minimized.
• Activate Editor (F12): Makes the current editor active
• Next Editor (Ctrl+F6): Activates the next open editor in
the list of most recently used editors
• Previous Editor (Ctrl+Shift+F6): Activates the previous
open editor in the list of most recently used editors
• Switch to editor (Ctrl+Shift+E): Shows a dialog that
allows switching to opened editors. Shows a dialog
that allows switching to opened editors.
• Next View: Activates the next open view in the list of
most recently used views
• Previous View (Ctrl+F7): Activates the previous open
view in the list of most recently used editors
• Next Perspective (Ctrl+F8): Activates the next open
perspective in the list of most recently used
perspectives
• Previous Perspective (Ctrl+Shift+F8): Activates the
previous open perspective in the list of most recently
used perspectives
Preferences
Composer Help
Opens a dialog box for indicating various Composer
preferences. There are a wide variety of preferences for
configuring the appearance of Composer and its views,
and for customizing the behavior of all tools that are
installed in the workbench. See Preferences for Voice
Applications and Preferences for Routing Applications.
140
Composer Menus
Help Menu
The Help menu contains the following items:
Welcome
Displays a welcome screen.
Displays the Eclipse help system.
Help Contents
Note: The Composer Help, which introduces the Composer Help wiki, is
integrated as a workbook within the overall Eclipse Help system.
Search
Opens a help pane where you can enter a search
expression and view results.
Dynamic Help
Opens a help pane to show context-sensitive help.
Key Assist
(Ctrl+Shift+L)
Opens a help pane with a listing of keyboard shortcuts.
Tips and Tricks
Opens a Tips and Tricks dialog box with a variety of
topics:
Cheat Sheets
Opens the Cheat Sheet Selection dialog box with several
available Cheat Sheets that lead you through key tasks.
Check for Updates
Currently not used by Composer.
Install New Software
Opens the Install dialog box where you can select or enter
a site that has the software you want to install. As
described in the Composer 8.1 Deployment Guide, use
this menu item to install later versions of Composer. Use
the About Eclipse SDK menu item to uninstall the current
version of Composer prior to updating to a later version.
For another usage example, see the Integrating with
Source Control Systems topic, Subversion section.
About Composer
Opens the About Composer dialog box, which displays
version, licensing, and Eclipse links. It also contains
buttons to access Feature Details, Plug-in Details, and
Configuration Details.
Composer Help
141
Composer Menus
Canvas Shortcut Menu
When creating a callflow or workflow in Composer or Composer Design perspective, a shortcut menu opens when
you right-click inside the canvas area. The figure below shows the menu when creating a workflow.
Canvas Menu
The Canvas menu contains the following items:
Allows you to add a note, text, or one of the shapes
shown in the figure above.
Add
When creating note objects in a diagram there are two ways to create
them. After selecting the note tool, you can either click a single point or
drag a box to indicate initial size. In the former case, the note will
continue to grow horizontally as text is entered. With the latter case, text
will automatically wrap text using the input width.
Gives the option of printing the diagram or saving it as an
image file.
File
Composer Help
Selecting Save as Image opens a dialog box giving the option to save in
one of the following formats: GIF, BMP, JPEG, SVG, PNG, or PDF. You
can also select Export to HTML.
142
Composer Menus
Delete from Model
Deletes the selected block from the workflow.
Allows you to select:
• All
Select
• All Shapes
• All Connectors
Arrange All
Use to arrange blocks and connectors in a callflow/
workflow in a more orderly fashion. If you don't like the
result, select Undo Arrange All from the Edit menu.
Filters
Allows you to show/hide connector labels.
View
Use to view a grid, snap to a grid, view rulers, view page
breaks, and re-calculate page breaks.
Use to:
• Zoom In
• Zoom Out
• Zoom 100%
Zoom
• Zoom to Fit
• Fit to Width
• Fit to Height
• Fit to Selection
Upgrade Workflow Diagram
or Upgrade Callflow Diagram
Use to upgrade a previously created diagram to the
current version of Composer.
Load Resource
Allows you to browse for/load Resource URIs.
Show Properties View
Shows the Properties view for the selected block or
diagram.
Composer Help
143
Composer Menus
Palette Group Menu
When creating a callflow or workflow in Composer or Composer Design perspective, a shortcut menu opens when
you right-click on a palette title bar. The figure below shows an example:
Note: You can customize the palette of diagram building blocks. Right-click a block category (such as Flow Control)
and select Customize. You can then hide and unhide blocks.
The Palette Group menu contains the following items:
Allows you to specify how the blocks in this palette group
should be displayed:
• Columns
Layout
• List
• Icons Only
• Detail
Use Large Icons
Allows you to increase the size of the icons representing
the callflow or workflow blocks.
Customize
Opens a dialog box where you can change block names
and descriptions, hide/unhide blocks from the palette,
configure the block drawer to open upon Composer
startup, and pin the block drawer open upon Composer
startup.
Settings
Opens a dialog box where you can change the font,
layout, and palette drawer options.
Pinned
Allows you to prevent a block drawer from closing when
you switch to a different palette group.
Composer Help
144
Composer Toolbars and Views
Composer Toolbars and Views
This section discusses Composer's toolbars.
• ToolbarsOverview
• MainToolbar
• View Toolbars
• PerspectiveSwitcherToolbar
• TrimStackToolbar
• Debugging Toolbar
• MinimizingandRestoringViews
Composer Help
145
Composer Toolbars and Views
Toolbars Overview
Composer has a number of toolbars for various purposes:
• Main Toolbar
• View Toolbars
• Perspective Switcher Toolbar
• Trim Stack Toolbar
• Debugging Toolbars
• Minimizing and Restoring Views
Note: To see a tooltip containing the name of a toolbar button (icon), hover the cursor over the button.
Composer Help
146
Composer Toolbars and Views
Main Toolbar
The Composer main toollbar is shown below (8.1.440 release).
Tip
Buttons on the main toolbar change based on the active perspective. Items in the toolbar might
also be enabled or disabled based on the state of either the active view or editor. Sections of the
main toolbar can be rearranged using the mouse.
Toolbar Buttons
The table below identifies buttons that can appear on the toolbar.
New
Select to create one of the following new resources: Java Composer
Project (includes callflows and workflows), .NET Composer Project,
Project..., Grammar builder file, VoiceXML file, GrammarXML file,
Composer Help
147
Composer Toolbars and Views
CallControlXML file, Backend JSP file, SCXML file, or Folder, or File.
You can also select Example or Other. Note: Before you can create a
new file, you must create a project in which to store the file.
Save
Saves the content of the active editor.
Print
Prints the contents of the active editor.
Debug
Re-launches the most recently launched application under debugger
control, or launches the selected resource or active editor depending on
the launch operation preference settings found on the Run/Debug >
Launching preference page. Used for voice applications.
Run
Re-launches the most recently launched application, or launches the
selected resource or active editor depending on the launch operation
settings found on the Run/Debug > Launching preference page. Click
the down arrow to select Run As or Run Configurations. You can also
organize favorites.
Run Last Tool
Allows you to quickly repeat the most recent launch in run mode or
quickly run the selected resource, if that mode is supported (based on
your current launch settings). Click the down arrow to select Run As or
bring up the External Tool Configurations dialog box.
Search
Brings up a Search dialog box where you can perform one of the
following types of searches: File, Java, Java Script. The General >
Search preference page allows you to set preferences for searches.
Launch GAX Server portal
Launches the Genesys Administrator Extension used by the GAX Server
(see GAX Server OPM Block). Composer uses the host, port, username,
and password used on the GAX Server Preferences page to fetch ARM
parameters or audio resource IDs list.
Access Project Variables
Opens a dialog box where you can set or delete application variables.
The appearance of this button changes depending on what type of
diagram you are working with. When working with a callflow or workflow,
the button appears as shown on the top left. When working with an
interaction process diagram, the button appears as shown on the bottom
left.
Create Java Composer Project
Brings up a wizard dialog box for creating a new Java Composer Project.
Composer Help
148
Composer Toolbars and Views
Create .NET Composer Project
Brings up a wizard dialog box for creating a new .NET Composer
Project.
Create New Callflow
Brings up a wizard dialog box for creating a main callflow diagram or a
sub-callflow diagram.
Create New Workflow
Brings up a wizard dialog box for creating a main workflow diagram or
sub-workflow diagram.
Create New Interaction Process
Brings up a wizard dialog box for creating an interaction process
diagram.
Show Properties View
Shows the properties of the selected diagram.
Open the Prompts Manager View
Displays the Prompts Manager view in the lower center pane of the
Composer main window.
Open Database Connection Properties
Opens the Connection Profiles tab where you can define a database
connection profile and test the connection. This button becomes enabled
when you select the connection.properties file in the Project db folder.
Generate All
Opens the Generate all dialog box, which lets you create properly
formatted VoiceXML or SCXML files for all callflow and/or workflows in
the Project.
Start Tomcat
Starts the Tomcat web server, which can be used for testing and
deployment. If Tomcat has already started, displays a message to this
effect.
Stop Tomcat
Stops the Tomcat web server.
Connect to Configuration Server
Opens a dialog box where you can connect to Configuration Server.
Used for routing applications. When you set up your Configuration
Database (Configuration Server), you define certain database objects,
such as agents (Persons), Agent Groups, Skills, and so on. These
objects can be defined in Configuration Manager or in Genesys
Administrator. When you use Composer to create SCXML routing
strategies executed by Orchestration Server (and Universal Routing
Server), there is a button to connect to Configuration Server. When
Composer Help
149
Composer Toolbars and Views
creating a routing strategy in Composer, those Configuration Database
objects will be available in the Composer routing strategy building blocks
that use them. For example, you might be creating a routing strategy that
routes to an Agent Group and using Composer’s Target block. The
Agent Group you defined in the Configuration Database would be
available for selection in the Target block.
Disconnect from Configuration Server
Disconnects from Configuration Server.
Statistics Manager
Opens the Statistics Manager view for working with Universal Routing
Server predefined statistics. Used for routing applications.
List Objects Manager
Opens the List Object Manager view, which allows you to create List
Objects in Configuration Server. Use for creating parameterized
applications. This provides System Administrators with the control to
configure and change values from inside Configuration Server. Used for
routing applications.
Publish active interaction process diagram to
Configuration Server
If an interaction process diagram is selected, this toolbar button appears.
Generate Code
Creates a properly-formatted VoiceXML file from a callflow diagram or a
SCXML file from a workflow diagram. Static pages (pure VXML or
SCXML code) are generated in the src-gen folder of the Composer
Project.
Validate
Checks your diagram files and other source files for completeness and
accuracy. In the case of errors, the Problems view becomes visible and
error markers are put on the blocks that contain errors. Double clicking
on an error in the Problems view will take you to the corresponding
blocks that contain the errors. Review each of the errors and do the
fixes, then validate again.
Next Annotation
Selects the next annotation. Supported in the Java editor.
Previous Annotation
Selects the previous annotation. Supported in the Java editor.
Last Edit Location
Reveals the location where the last edit occurred.
Back To
Composer Help
150
Composer Toolbars and Views
Reveals the previous editor location in the location history.
Forward To
Reveals the next editor location in the location history.
Turn Grammar Constraints Off
When editing an XML file that has a set of constraints or rules defined by
a DTD or an XML schema, you can turn the constraints on and off to
provide flexibility in the way you edit, but still maintain the validity of the
document periodically. When the constraints are turned on, and you are
working in the Design view, the XML editor prevents you from inserting
elements, attributes, or attribute values not permitted by the rules of the
XML schema or DTD, and from removing necessary or predefined sets
of tags and values.
Reload Dependencies
If you make changes to a DTD file or XML schema associated with an
XML file (that is currently open), click to update the XML file with these
changes. The changes will be reflected in the guided editing
mechanisms available in the editor, such as content assist.
Expand All
Select to expand all of the items in the Breakpoints view.
Collapse All
Select to collapse all of the current elements in the view.
Font Style
Allows you to change the font style of the selected text.
Font Size
Allows you to change the font size of the selected text.
Bold Font Style
Allows you to bold the selected text.
Italic Font Style
Allows you to change the selected text to italics.
Font Color
Allows you to change the font color of the select text.
Fill Color
Allows you to change the fill color of the selected object.
Line Color
Allows you to change the color of the selected line.
Composer Help
151
Composer Toolbars and Views
Line Style
Allows you to change the style of the selected line.
Apply Appearance Properties
Allows you to apply the applicable appearance properties of the first
application shape to the other selected shapes.
Select All
Selects all objects in the diagram.
Arrange All
Arranges all or only the selected objects in the diagram.
Align
Aligns the selected objects in the callflow diagram: left, right, center, top,
middle, bottom.
Auto Size
Allows you to change the size of the selected object.
All Connector Labels
Shows labels for all connector lines in the diagram.
No Connector Labels
Hides labels for all connector lines in the diagram.
Show/Hide Compartment
Shows or hides composite attributes within an editor, which can
optionally be collapsed or expanded.
Magnification
Allows you to zoom and out of the current view, as well as to change the
magnification from 5% to 400%. You can also fit to height, width, or
selection.
Composer Help
152
Composer Toolbars and Views
View Toolbars
The title bar of a view contains a toolbar. This topic describes the following view toolbars:
Project Explorer
The Project Explorer toolbar is shown below.
Each toolbar button is identified in the table below.
Collapse All
Select to collapse all of the current elements in the view.
Link Open Editors
When you have multiple files open for editing, select to bring an open file
to the foreground (make its editor session the active editor) every time
you select that open file in one of the navigation views.
View Menu
Select to show additional actions for this view.
• Top Level Elements. Select from Projects or Working
Sets (see below).
• Folder Presentation. Select from Flat or Hierarchical.
• Working Set. Select from Window Working Sets, No
Working Sets, Selected Working Sets. Working sets
group elements for display in views or for operations
on a set of elements. The navigation views use
working sets to restrict the set of resources that are
displayed. If a working set is selected in the navigator,
only resources, children of resources, and parents of
resources contained in the working set are shown.
• Deselect Working Set. Deselects the active working
sets. All elements are shown after invoking this action
• Edit Active Working Set. Opens the Edit Working Set
wizard to edit the currently active working set.
Composer Help
153
Composer Toolbars and Views
• Package Presentation. Select from Flat or
Hierarchical.
• Customize View. Allows you to filter the Project
Explorer view to hide projects, folders, or files that you
do not want to see.
• Link Editor. Brings an open file to the foreground
(makes its editor session the active editor) every time
you select that open file in one of the navigation
views.
Bookmarks View
The Bookmarks view is shown below.
Each view button is identified in the table below.
View Menu
Select to show additional actions for this view.
• Sort By: Select from Description, Resource, Path,
Location, Ascending.
• New Bookmarks View.
• Configure Contents. Opens a window where you can
filter the contents of the Bookmarks tab.
• Columns. Opens a dialog box where you can set the
width and move the following columns up and down:
Description, Resource Path, and Location columns.
• Preferences. Opens a dialog box where you can hide
and show the following columns: Description,
Resource, Path, Location, Creation Time, ID, Type.
Minimize
Minimizes the Bookmarks tab.
Maximize
Maximizes the Bookmarks tab.
Composer Help
154
Composer Toolbars and Views
Canvas View
The canvas is where you create callflows for your voice applications and workflows for your routing applications.
The Canvas view toolbar is shown below in the upper-right.
Each view button is identified in the table below.
Minimize
Minimizes the Canvas area.
Maximize
Maximizes the Canvas area.
Palette View
The Palette contains link tools as well as various types of blocks. To create callflow diagrams, the block categories
are: Basic Blocks, Server Side Blocks, CTI Blocks, Reporting Blocks, External Message Blocks, Database Blocks,
and Context Services Blocks. To create workflow diagrams, the block categories are: Flow Control Blocks, Routing
Composer Help
155
Composer Toolbars and Views
Blocks, Voice Treatment Blocks, Server Side Blocks, eService Blocks, and Context Services Blocks. The Palette
view toolbar is shown below.
Each toolbar button is identified in the table below.
Select
Use to select a block for a callflow or workflow.
Zoom In
Click left to zoom in, Shift + left click to zoom out, drag to zoom to
selection.
Zoom Out
Click left to zoom out, Shift + left click to zoom in.
Create Note
Click to create a note, text document, or note attachment. When creating
note objects in a diagram there are two ways to create them. After
selecting the note tool, you can either click a single point or drag a box
to indicate initial size. In the former case, the note will continue to grow
horizontally as text is entered. With the latter case, text will automatically
wrap text using the input width.
Properties View
The Properties view shows the properties for a selected block and allows you to set/modify them. An example
Properties view and toolbar is shown below.
Composer Help
156
Composer Toolbars and Views
Each toolbar button is identified in the table below.
Show Categories
If enabled, method, field and type labels contain the categories specified
in their block properties
Show Advanced Properties
If enabled, the Properties view shows advanced properties.
Restore Default Value
Use after changing a value in the Properties view to revert back to the
default value.
View Menu
Select to show additional actions for this view: Show Categories, Show
Advanced Properties, and Columns.
Minimize
Minimizes the Properties tab.
Maximize
Maximizes the Properties tab.
You can change settings for consoles on the Window Preferences Run/Debug Console page. An example Query
Console view is shown below.
Composer Help
157
Composer Toolbars and Views
Each toolbar button is identified in the table below.
Clear Console
Clears the currently active console.
Scroll Lock
Changes if scroll lock should be enabled or not in the current console.
Pin Console
Pins the current console to remain on top of all other consoles.
Display Selected Console
Opens a listing of current consoles and allows you to select which one
you would like to see.
Open Console
Opens a new console of the selected type.
Call Trace View
The Call Trace view displays metrics which describe the events occurring in the application, such as recognition
events, audio playback, user input, errors and warnings, and application output. An example Call Trace view and
Toolbar are shown below.
Composer Help
158
Composer Toolbars and Views
Each toolbar button is identified in the table below.
Call Trace History
Lists past calls. Once you select a past call, shows call trace history for
that past call.
Terminate
Terminates the process that is associated with the current Process
Console.
Filter Metrics
Brings up the Filter Metrics dialog box where you can select the following
filters: Platform actions, User input, Application output, Document flow,
Errors and warnings.
Search View
The search dialog lets you perform text string, File, Java, and JavaScript searches. When you first click the Search
tab, there is a link to bring up the Search dialog box. The figure below shows the results of an example search and
the toolbar.
Each toolbar button is identified in the table below.
Composer Help
159
Composer Toolbars and Views
Show Next Match
Shows the next items that meets the search criteria.
Show Previous Match
Shows the previous item that met the search criteria.
Remove Selected Matches
Removes matched items that you have selected from the results .
Remove All Matches
Removes all matches from the results.
Expand All
Select to expand all of the current elements in the view.
Collapse All
Select to collapse all of the current elements in the view.
Run Current Search Again
Repeats the search with currently-defined parameters.
Cancel Current Search
Cancels the current search.
Show Previous Searches
Displays a list of previous searches.
Pin the Search View
Pins the current search view to remain on top of all other views.
View Menu
Select from the following: Show as List, Show as tree, Filters,
Preferences.
As you work with resources in the workbench, various builders may automatically log problems, errors, or warnings
in the Problems view. For example, when you save a Java source file that contains syntax errors, those will be
logged in the Problems view. When you double-click the icon for a problem, error, or warning, the associated block
is highlighted in the canvas area. Also see topics Diagram Validation and Validating a Single Flow Diagram.
Problems View
An example Problems view with toolbar is shown below.
Composer Help
160
Composer Toolbars and Views
Each toolbar button is identified in the table below.
View Menu
Select to show additional actions for this view. Show: All Errors, Warning
on Selection, Show All. Group By: Java Problem Type, Type, JavaScript
Problem Type, Severity, None. Sort by: Description, Resource, Path,
Location, Type, Ascending New Problems View Configure Contents.
Opens a window where you can filter the contents of the Problems tab.
Columns. Opens a dialog box where you can set the width and move the
following columns up and down: Description, Resource Path, and
Location. Preferences. Opens a dialog box where you can hide and
show the following columns: Description, Resource, Path, Location,
Creation Time, ID, Type.
Minimize
Minimizes the Problems tab.
Maximize
Maximizes the Problems tab.
Statistics Manager View
The Statistics Manager view lets you easily create, delete, and organize created statistics into folders.
Composer Help
161
Composer Toolbars and Views
Each toolbar button is identified in the table below.
Add New Folder
You have the option of creating folders to organize statistics that you
create. Click this button to create a new folder.
Add New Statistic
To build a new statistic, select a folder and click this button to bring up
Statistics Builder.
Delete Selected Item
To delete a statistic that you have created, select the statistic and click
this button to delete.
Help View
The Help view shows the following toolbar after selecting Search from the Help menu.
Composer Help
162
Composer Toolbars and Views
Each toolbar button in the Help view is identified in the table below.
Show All Topics
Select to display all available Help topics.
Show Result Categories
Select to display the categories for the Help results.
Show Result Descriptions
Select to display the descriptions of the Help topics.
Back
Move back through topics.
Forward
Move forward to next topic.
Once you select a topic, the toolbar changes as shown below.
Composer Help
163
Composer Toolbars and Views
Each toolbar button is identified in the table below.
Show All Topics
Select to display all available Help topics.
Show in External Window
Select to display the results in an external window.
Show in All Topics
Select to display the results in all topics.
Print
Select to print the results/topic.
Bookmark
Select to bookmark the results/topic
Highlight Search Term
Select to highlight a search term.
Back
Move back through results.
Forward
Move forward to next result.
Composer Help
164
Composer Toolbars and Views
Perspective Switcher Toolbar
Perspectives are task-oriented layouts for organizing the views and windows in your workbench. The Perspective
Switcher Toolbar allows quick access to perspectives that are currently open.
Open Perspective Button
An Open Perspective button
(displaying all Eclipse perspectives) may be located at the start or end of the
Perspective Switcher toolbar, depending on your version of Eclipse.
Perspective Switcher Toolbar
The Perspective Switcher Toolbar is normally positioned below the main toolbar (top-left), but you can also position
it vertically on the left-hand side of the workbench.
Shortcut Menu for Perspective Buttons
Right-clicking the button for an active perspective opens a shortcut menu. The first three entries in the table below
do not appear if the perspective is not selected.
Customize
Opens the customize perspective dialog box.
Save As
Opens a dialog box for saving a customize perspective.
Once saved, the customize perspective appears in the list
that opens when you click the Open Perspective button.
Composer Help
165
Composer Toolbars and Views
Reset
Resets the changes you made to a perspective.
Close
Removes the button for the perspective.
Dock On
Allows you to dock the perspective button: Top Right, Top
Left, or Left (left-hand side of work bench).
Show Text
Toggles between an icon and text on the perspective
button.
Composer Help
166
Composer Toolbars and Views
Trimstack Toolar
Minimizing a view stack will also produce a toolbar in the trim at the outer edge of the workbench window (a Trim
Stack). This bar will contain a button for each of the views in the stack. Clicking on one of these icons will result in
the view being displayed as an overlay onto the existing presentation. This is an example of a Trim Stack Toolbar
containing buttons for Restore, Properties, Problems, Console, Call Trace, and Prompts Manager views:
The first button is Restore
Composer Help
, which restores the normal view.
167
Composer Toolbars and Views
Debugging Toolbars
In GVP and ORS Debugging perspectives, the first pane contains Debug and Navigator views. The second pane
contains views for Variables, Breakpoints, and Expressions. A GVP example is shown below.
Debug View
The Debug view shows the name of the callflow or workflow diagram being debugged, as well as the status of the
debug progress or result.
Each toolbar button is identified in the table below.
Remove All Terminated Launches
Select to clear the Debug view of all terminated launches.
Resume
Select to resume the execution of the currently suspended debug target.
Suspend
Composer Help
168
Composer Toolbars and Views
[Not supported in Composer]
Terminate
Select to terminate the launch associated with the selected debug target.
Once a launch is terminated it can be automatically removed from the
Debug view. When using the ORS Debugger, Terminate means that the
session in ORS will end along with the debugging session.
Disconnect
Not supported for the GVP Debugger. When using the ORS Debugger,
Disconnect means that the debugging session ends, but ORS will
continue executing the SCXML.
Step Into
Disabled for both routing and voice applications.
Step Over
Step Over is the only way to step for both routing and voice applications.
Select to step over the next method call (without entering it) at the
currently executing line of code. Even though the method is never
stepped into, the method will be executed normally.
Step Return
[Not supported in Composer]
Drop to Frame
[Not supported in Composer]
Use Step Filters
[Not supported in Composer]
View Menu
Select from the following:
• View Management
• Java (then select from: Show Monitors, Show System
Threads, Show Qualified Names, Show Thread
Groups)
Navigator View
The Navigator view shows the same Project folder structure shown in the Project Explorer window of the Composer
perspective.
Composer Help
169
Composer Toolbars and Views
Each toolbar button on the Navigator toolbar is identified in the table below.
Back
Moves back.
Forward
Moves forward.
Up
Navigate up one level in the hierarchy
Collapse All
Select to collapse all of the current elements in the view.
Link Open Editors
When you have multiple files open for editing, select to bring an open file
to the foreground (make its editor session the active editor) every time
you select that open file in one of the navigation views.
View Menu
Select to show additional actions for this view.
• Select Working Set. Working sets group elements for
display in views or for operations on a set of
elements. The navigation views use working sets to
restrict the set of resources that are displayed. If a
working set is selected in the navigator, only
resources, children of resources, and parents of
resources contained in the working set are shown.
• Deselect Working Set. Deselects the active working
sets. All elements are shown after invoking this
action.
• Edit Active Working Set. Opens the Edit Working Set
wizard to edit the currently active working set.
• Sort (by name or type).
• Filters (class, JETEmitters, general, or *).
Composer Help
170
Composer Toolbars and Views
• Link with Editor. Brings an open file to the foreground
(makes its editor session the active editor) every time
you select that open file in one of the navigation
views.
Variables View
The Variables view displays information about the variables associated with the stack frame selected in the Debug
view. When debugging a Java program, variables can be selected to have more detailed information as displayed
below. In addition, Java objects can be expanded to show the fields that a variable contains.
Each toolbar button in the Variables view is identified in the table below.
Show Type Names
Select to change if type names should be shown in the view or not.
Unavailable when columns are displayed. Hint: Select Layout from View
menu and de-select Show Columns.
Show Logical Structure
Select to change if logical structures should be shown in the view or not.
Collapse All
Select to collapse all the currently expanded variables.
View Menu
Select from the following:
• Layout: Vertical View Orientation, Horizontal View
Orientation, Variables view Only, Show Columns,
Select Columns.
Composer Help
171
Composer Toolbars and Views
• Java: Show Constants, Show Static Variables, Show
Qualified Names, Show Null Array Entries, Show
References, Java Preferences.
Breakpoints View
The Breakpoints view and toolbar manage breakpoints within a debugging session.
Each toolbar button in the Breakpoints view is identified in the table below.
Remove Selected Breakpoints
Select to clear all selected breakpoints.
Remove All Breakpoints
Select to clear all breakpoints.
Show Breakpoints Supported by Selected Targets
Select to show all breakpoints supported by the selected targets.
Go To File For Breakpoint
[Not supported in Composer]
Skip All Breakpoints
Select to skip over all breakpoints.
Create URL Breakpoint
Select to create a breakpoint that uses a URL.
Expand All
Select to expand all the current breakpoints.
Collapse All
Select to collapse all the current breakpoints.
Link With Debug View
[Not supported in Composer]
Add Java Exception Breakpoint
Select to open a dialog box where you can:
Composer Help
172
Composer Toolbars and Views
• Type a string that is contained in the name of the
exception you want to add. You can use wildcards as
needed ("* " for any string and "? " for any character).
• Select the exception types you want to add.
• Select Caught and Uncaught as needed to indicate on
which exception type you want to suspend the
program.
[This option is not relevant to GVP Debugging in Composer.]
View Menu
Select from the following:
• Group By: Breakpoints, Breakpoint Types, Breakpoint
Working Sets, Files, Projects, Resource Working
Sets, Advanced...
• Default Working Set
• Deselect Default Working Set
• Working Sets
• Show Qualified Names
Expressions View
Use the Expressions view to inspect data from a stack frame of a suspended thread, and other places.
Each toolbar button in the Expressions view is identified in the table below.
Show Type Names
Select to change if type names should be shown in the view or not.
Unavailable when columns are displayed. Hint: Select Layout from View
menu and de-select Show Columns.
Show Logical Structure
Select to change if logical structures should be shown in the view or not.
Composer Help
173
Composer Toolbars and Views
Collapse All
Select to collapse all the currently expanded expressions.
Create a New Watch Expression
Select to open the Create New Expression dialog box, which allows you
to create a new watch expression based on the selected variable and
add it to the Expressions View.
Remove Selected Expressions
Select to remove the selected expressions.
Remove All Expressions
Select to remove all expressions.
View Menu
Select from the following:
• Layout: Vertical View Orientation, Horizontal View
Orientation, Expressions View Only.
• Java: Show Constants, Show Static Variables, Show
Qualified Names, Show Null Array Entries, Show
References, Java Preferences.
Composer Help
174
Voice Applications and Callflows
Voice Applications and Callflows
This section contains the following:
• Callflow Post Installation
• What is GVP and How Do Voice Applications Work?
• CallflowBlocks
• VariablesinCallflows
• HelloWorldSample
• Creating Voice Applications for GVP
• CreatingCCXMLApplications
• CreatingVXMLApplications
• Working with Java Composer Projects
• Working with .NET Composer Projects
• VXMLProperties
Composer Help
175
Voice Applications and Callflows
Getting Started with Voice Applications
This section contains the following topics:
• Callflow Post Installation Configuration
• Working with Java Composer Projects
• Working with .NET Composer Projects
• Accessing the Editors and Templates
Also see Upgrading Projects/Diagrams.
Composer Help
176
Voice Applications and Callflows
Callflow Post Installation
After installation of Composer, you need to perform some post-installation configuration tasks. Note: If you plan to
use IIS as your web server for testing and deployment, you will also need to configure IIS preferences in Composer
so that your applications can be auto-deployed to IIS from within the workbench. Composer can work only with IIS
installed on the local machine. You can work with both Tomcat and IIS from the same installation of Composer. Also
see: Context Services Preferences.
Tomcat
1. Select Window > Preferences, then expand Composer and select Tomcat. Starting with 8.1.420.14, Composer
supports Tomcat 7. Composer installation adds the role for manager-gui to Tomcat configuration for callflows and
workflows. The default username and password for the bundled Tomcat is admin. The username and password for
manager-gui is tomcat.
2. Provide the same port number that you specified during installation. The default user name and password for the
bundled Tomcat is admin.
3. To start Tomcat, click the
button on the main toolbar.
If you already have Java Composer Projects in the workspace and did not perform the Tomcat configuration earlier,
perform the following steps to deploy the project on Tomcat:
4. From the Project Explorer, right-click on the Java Composer Project and select Properties.
5. Select Tomcat Deployment and click the Deploy button.
Note: This also needs to be done if a Java Composer Project is imported.
Internet_Information_Services
1. Select Window > Preferences, then expand Composer and select IIS/.NET.
2. Provide the IIS website port number where you want to deploy your .NET Composer Project. The IIS Default Website
Site port number is 80.
3. If you plan to use .NET Composer Project builder to compile the server-side files (.aspx) in your .NET Composer
Project, you will need to configure the location of the aspnet_compiler.exe file in the Microsoft .NET Installed
Path field.
Note: The typical location of the ASP.NET compiler is:C:\WINDOWS\Microsoft.NET\Framework\
v2.0.50727\aspnet_compiler.exe.
4. Specify the Web Services Enhancement (WSE) path. This must be specified before Composer .NET Projects can
work.
Composer Help
177
Voice Applications and Callflows
If you already have .NET Composer Projects in the workspace and did not perform the IIS configuration earlier,
perform the following steps to deploy the project on IIS:
5. From the Project Explorer, right-click on the .NET Composer Project and select Properties.
6. Select IIS Deployment and click the Deploy button.
Note: This also needs to be done if a .NET Composer Project is imported or renamed as well.
GVP_Debugger
1. Select Window > Preferences, then expand Composer and select Debugging.
2. Specify the following settings:
• Network Interface. Composer debugging uses this setting to make the socket connection for the
Debugger control channel. Select the interface that is applicable to your scenario. The debugging server
(GVP or ORS) must be able to access the Tomcat server, bundled as part of Composer, for fetching the
Voice or Routing application pages. If you have multiple NIC cards of multiple networks (such as
Wireless and LAN) select the interface on which GVP or ORS will communicate to your desktop. In case
you are connected over VPN, select the VPN interface (such as PPP if connected via a Windows VPN
connection).
• Client Port Range. Enter a port range to be used for connection to ORS for SCXML debugging sessions.
3. Select GVP Debugger and specify:
• SIP Phone User Name. This is the user name or phone number of your SIP Phone.
• SIP Phone Hostname/IP . This is the IP address on which your SIP phone is running. It is possible to
send the call to a SIP Phone located on some other machine, but it is generally advisable to have the SIP
Phone locally for ease of access. If you have multiple NIC cards or interfaces, make sure you specify the
same IP address as corresponds to the Network Interface selected above.
• SIP Phone Port. This is the port on which your SIP phone is running.
• Platform IP. This is the IP address of your GVP Server. Note: Composer 8.1 is compatible with GVP 8.1.
Operation with GVP 8.0 is not supported.
• Platform Port. Typically, this will be the default port 5060 or the port that you configured for the
Resource Manager (RM) or Media Control Platform (MCP) on your GVP Server. You can make direct
calls to MCP from the debugger. However, if using pre-provisioned DNIS, then you will need to make
test calls to the RM.
• Use Secure Connection. See Debugging TLS Support.
Composer may display a prompt asking if you wish to propagate these settings to an existing launch configurations.
MIME_Types
MIME (Multipurpose Internet Mail Extensions) refers to a common method for transmitting non-text files via Internet
e-mail. By default the SCXML MIME type is already configured in the Tomcat server bundled with Composer. If you
Composer Help
178
Voice Applications and Callflows
are using the Internet Information Services (IIS) Application Server to deploy ASP.NET projects, add the following
MIME type extensions through the IIS Manager of your webserver:
.json
text/json
.vxml
text/plain
.scxml
text/plain
.xml
text/xml
Prompt_Resource_Validation
This preference enables diagram validation warnings where prompt audio resources no longer exist in the given file
path. If the audio file is no longer present, the diagram block will show a warning icon.
1. Select Window > Preferences.
2. Select Composer > Composer Diagram.
3. Select the option Enable Validation for Prompt Resources. By default the preference is not enabled.
Media_Control_Platform
GVP 8.1 provides a debugger interface to allow Composer to make direct calls. By default it is turned off and you
will have to enable it to allow GVP to accept calls from the debugger interface.
1. Outside of Composer, locate your Media Control Platform (MCP) Application. For example, you can open your MCP
Application object in Configuration Manager or in Genesys Administrator for the Configuration environment that is
serving the MCP platform.
2. Under the vxmli section of the MCP, look for a setting called debug.enabled. By default, it is set to false. Change
the value to true and restart your MCP.
Firewall
If you have a local firewall on your machine, open up the following ports:
• Tomcat port (generally, this is set to port 8080). If you installed Tomcat on a different port, open its corresponding port
in the firewall.
• IIS port (generally, this is set to port 80). If you installed IIS on a different port, open its corresponding port in the
firewall.
• The UDP port on which your SIP phone is running (by default, this will be either 5060 or 5070). Check your SIP phone
settings for the exact port number.
• RTP ports on which your SIP phone will get the audio stream. Check your SIP phone Help file for details on this. Some
SIP phones will autoconfigure this during installation.
Composer Help
179
Voice Applications and Callflows
If you continue to run into problems with the firewall and calls are not coming through successfully, consult your
network administrator.
Composer Help
180
Voice Applications and Callflows
Working with Java Composer Projects
A Java Composer Project contains voice application files, callflows, and related server side .jsp / Java files for
building an IVR application. A Java Composer Project can also contain routing workflows. It has an associated Java
Composer Project builder that will compile source files in the project. Composer ships with a bundled Tomcat and it
is used as the web/application server for Java Composer Projects during the development and testing phase. For
information on supported operating systems for Java Composer Projects, see the Composer 8.1 Deployment
Guide.
Getting Started
To start using Java Composer Projects:
1. Create a new Java Composer Project.
2. Use the Project Properties tab to deploy the Java Composer Project to Tomcat within Composer. (Right-click the
project > Properties > Tomcat Deployment.)
3. Create callflows and use Run or Debug mode to launch the call with Next Generation Interpreter.
Note: Run as / Debug as will automatically pick the port number from the preferences and form the corresponding
Application URL. For example: http://machineIP:portno/JavaVoiceProjectName/src-gen/CallflowName.vxml
Composer Help
181
Voice Applications and Callflows
Working with .NET Composer Projects
A .NET Composer Project contains voice application files and related server side .aspx / C# / files for building an
IVR program. It has an associated .NET Composer Project builder based on Microsoft .NET Framework that can
incrementally compile .aspx source files as they are changed.
Prerequisites
This step is not a mandatory prerequisite. Starting with 8.1.420.14, Composer allows creating .NET Composer
Projects without the WSE dll files. Microsoft Web Services Enhancements (WSE) is also required for creating .NET
projects in Composer. However, the WSE installer may not install on Windows 2008. These steps give a
workaround:
1. Download the Microsoft WSE 3 "msi" installer bundle.
2. Use 7Zip to extract the contents to a folder.
3. In Composer, select Window > Preferences > Composer > IIS/.NET.
4. Set the Microsoft WSE 3.0 Installed Path field the $Folder\Microsoft.Web.Services3.dll file.
5. Create your Composer .NET Projects.
Getting Started
To prepare for using .NET Composer Projects:
1. Install Microsoft IIS.
2. Install Microsoft .NET and .NET Framework.
Note: Microsoft .NET is required for Composer Server Side blocks.
1. Enable ASP.NET in your IIS.
2. Configure the following MIME settings in your IIS:
• .ccxml - application/ccxml+xml
• .vxml
- text/xml
• .grxml - application/srgs+xml
• .vox
- audio/basic
• .xml - application/xml
3. Configure the IIS Website Port number in Composer IIS Preferences (Window > Preferences > .NET)
Composer Help
182
Voice Applications and Callflows
By default, IIS comes with the DefaultWebSite which runs on port 80. If you want to deploy the .NET Composer
Project in your custom website, configure the corresponding port number in the IIS Website Port field.
1. Create a .NET Composer Project.
2. Use the Project Properties tab to deploy the .NET Composer Project to IIS within Composer. (Right-click Properties >
IIS Deployment.)
3. Create the diagram callflows and perform Run as / Debug as to launch the call with NGI.
Note: Run as / Debug as will automatically pick the port number from the preferences and form the corresponding
application URL. For example: http://machineIP:portno/NETProjectName/src-gen/
CallflowName.vxml Also see: Request.Form Error Message for .NET Projects
Composer Help
183
Preferences for Voice Applications
Preferences for Voice Applications
Composer Preferences are applicable at a workspace level. They apply to all projects within the workspace. To
open the Preferences dialog box for Composer, select Window > Preferences and expand Composer.
Note: You can also set options in the Project Properties dialog box by right-clicking a Project and selecting
Properties.
• CCXMLFile Preferences
• Diagram Preferences
• GAX Server Preferences
• GRXML File Preferences
• VXML File Preferences
• GVP Debugger Preferences
• .NET Preferences
• Time Zone Preferences
• Tomcat Preferences
• XML Preferences
• Context Services Preferences
There are also Refresh automatically and Time zone preferences.
Tip
You can also set options in the Project Properties dialog box. Right-click a Project and select
Properties
Composer Help
184
Preferences for Voice Applications
CCXML File Preferences
Select Window > Preferences > Composer > CCXML Files. The following preferences for CCXML files can be set
in the Preferences dialog box:
Creating Files
1. Under Creating Files, select the Suffix to use for CCXML files from the drop-down list: * ccxml
2. Select the Encoding type from the drop-down list. The encoding attribute in a CCXML document specifies the
encoding scheme. The encoding scheme is the standard character set of a language. The CCXML processor uses
this encoding information to know how to work with the data contained in the CCXML document. UTF-8 is the
standard character set used to create pages written in English. Select from the following:
• ISO 10646/Unicode(UTF-8)
• ISO 10646/Unicode(UTF-16) Big Endian
• ISO 10646/Unicode(UTF-16BE) Big Endian
• ISO 10646/Unicode(UTF-16LE) Little Endian
• US ASCII
• ISO Latin-1
• Central/East European (Slavic)
• Southern European
• Arabic, Logical
• Arabic
• Chinese, National Standard
• Traditional Chinese, Big5
• Cyrillic, ISO-8859-4
• Cyrillic, ISO-8859-5
• Greek
• Hebrew, Visual
• Hebrew
• Japanese, EUC-JP
• Japanese, ISO 2022
• Japanese, Shift-JIS
• Japanese, Windows-31J
• Korean, EUC-KR
Composer Help
185
Preferences for Voice Applications
• Korean, ISO 2022
• Thai, TISI
• Turkish
Validating Files
• Select or clear the Warn when no grammar is specified check box (not selected by default).
Source and Syntax Coloring
Source and Syntax Coloring preferences for CCXML files are set under the XML preferences provided by Eclipse.
• Use Window > Preferences, expand the Web and XML entry, then expand the XML Files subentry.
Templates
In addition to previewing templates, you can create, edit, and remove selected templates. There are also buttons to:
• Restore a removed template.
• Revert back to a default template
• Import a template.
• Export a template.
Composer Help
186
Preferences for Voice Applications
Diagram Preferences
Select Window> Preferences > Composer > Composer Diagram. The following preferences for diagrams can be
set in the Preferences dialog box:
Global Settings
1. Select or clear the check box for each of the following diagram global settings:
• Show Connection Ports. If enabled, connection ports (both exception ports and out ports) are always
displayed on blocks. This makes it convenient to draw links between blocks and to get immediate
feedback on how many ports each block provides. However, in this case, the ability to reposition
connections on a block is not available. If switched off, connection ports are not displayed by default, but
repositioning or finer control over connection link placement becomes available. Note: This preference
applies to all projects and is not available for individual projects.)
• Show popup bars. If enabled, this setting displays basic blocks from the blocks palette in a pop-up bar if
you hover your mouse on the diagram for one or two seconds without clicking. Note: blocks are shown in
icon view only.)
• Enable animated layout. If enabled, causes diagrams to gradually animate to their location when the
Diagram \> Arrange \> Arrange All menu option is clicked.
• Enable animated zoom. If enabled, while using the zoom tools, shows a gradual transition between the
initial and final state of the diagram on the canvas. If off, the zoom is instantaneous. Similar behavior for
animated layout when the Diagram \>\> Arrange \>\> Arrange All menu option is clicked.
• Enable anti-aliasing. If enabled, improves the appearance of curved shapes in the diagram. You can
see its effect on the circles in the Entry and Exit blocks.
• Show CodeGen success message. If unchecked, then the confirmation dialog at the completion of code
generation will not be shown.)
• Prompt to Save Before Generating Code. If checked, when you generate code for an unsaved diagram,
a prompt appears indicating the diagram has been modified and asking if you want to save the changes
before generating code. The dialog box also contains a checkbox: Automatically save when generating
code and do not show this message again.
• Show Validation success message. If unchecked, then the confirmation dialog at the time of Validation
will not be shown.)
• Enable Validation for Prompt Resources. This preference is used for voice applications. If unchecked,
then a validation check for missing prompts is not performed at the time of Validation.
• Interaction Process Diagram. If unchecked, Composer will save Interaction Process Diagrams before
publishing.
• Prompt to delete Published objects when Interaction Process Diagram is deleted. If unchecked,
Composer will attempt to delete any Published objects when an Interaction Process Diagram is deleted. If
Composer is not connected to Configuration Server, object deletion will not work.
• Parameters auto synchronization (available starting with 8.1.410.14). This option reduces developer
coding time by enabling Composer to automatically declare variables in a Main diagram to match input/
Composer Help
187
Preferences for Voice Applications
output variable names in Subdialog block/Subroutine diagrams and to automatically perform the
mapping. This feature is available for both user and system variables. For example, if a Subroutine
diagram returns a variable called “xyz” and if Composer automatically declares “xyz” in the Main diagram
to hold the output, then you do not have to manually do the mapping. If enabled, you are prompted for
auto-synchronization whenever there is a need to change parameters names or add new variables in the
dialogs.
Scenarios:
1. Subdialog or Subroutine Diagram: Entry Block—The auto-synchronization process will synchronize
any newly added/updated variables and existing variables in the Subdiagram. If you add a new Input
type variable, a prompt appears asking whether to add a corresponding Input parameter. You are
also prompted to select or add the Input source variable in all the called Subroutine diagrams. New
parameter naming in the calling Subdialog block is the same as the Input variable added in the Entry
Block. If the Subroutine diagram is called from many diagrams, Composer provides a variable
selection option for the called diagrams.
2. Main callflow Diagram: Entry Block—If you add a new Input type variable, a prompt appears asking
whether to add the corresponding input parameter. You are also prompted to select or add an Input
source variable in all the called Play Application blocks. New Parameter naming in the calling Play
Application block is the same as the Input variable added in the Entry Block. If the Main diagram was
called from multiple Play Application blocks, a variable selection option for all the called blocks is
provided.
3. Subdialog or Subroutine diagram: Exit Block—If you change or delete a return parameter, a prompt
appears on whether to delete the Output parameter and/or the missing ones in case of a change in
all the called Subroutine or Subcallflow diagrams.
4. The auto-synchronization parameter option also applies when there is a change in a configured
Subroutine diagram. The auto-synchronization dialog confirmation appears as soon as a Subroutine
diagram is added/updated. If the confirmation dialog is selected, it automatically synchronizes the
Subroutine parameters to the Main diagram. This auto-synchronization prompt always appear even
though the same diagram is updated again. When Output parameters are added in the Exit block,
parameter synchronization also occurs.
5. Application URL for Publish and Debugging. Select Use IP Address or Use Host Name.
Notes:
Composer creates unique names for auto-sync variables, such as <SubBlockName>_<VariableName>. SubBlockName is the name
of the Subroutine/ Subdialog / Play Application blocks where the Subroutine diagram is being invoked. VariableName is the input
variable name created in a Subroutine diagram.
2. Click Apply.
Colors and Fonts
1. Select Appearance under Composer Diagram.
2. Click Change and make selections to change the default font if you wish.
3. Click the appropriate color icon beside any of the following and make selections to change color:
• Font color
• Fill color
Composer Help
188
Preferences for Voice Applications
• Line color
• Note fill color
• Note line color
4. Click Apply.
Connections
1. Select Connections under Composer Diagram.
2. Select a line style from the drop-down list:
• Oblique
• Rectilinear
3. Click Apply.
Pathmaps
1. Select Pathmaps under Composer Diagram.
2. Click New to add a path variable to use in modeling artifacts, or If the list is populated, select the check box of a path
variable in the list.
3. Click Apply.
Printing
1. Select Printing under Composer Diagram.
2. Select Portrait or Landscape orientation.
3. Select units of Inches or Millimetres.
4. Select a paper size (default is Letter).
5. Select a width and height (for inches, defaults are 8.5 and 11; formillimeters, defaults are 215.9 and 279.4).
6. Select top, left, bottom, and right margin settings (for inches, defaults are 0.5; for millimeters, defaults are 12.7).
7. Click Apply
Rulers and Grid
You can make use of rulers and grids when creating diagrams. Rulers and grids can provide a backdrop to assist
you in aligning and organizing the elements of your callflow diagrams.
Composer Help
189
Preferences for Voice Applications
1. Select Rulers and Grid under Studio Diagram.
2. Select or clear the Show rulers for new diagram check box (not selected by default).
3. Select ruler units from the drop-down list:
• Inches
• Centimeters
• Pixels
4. Select or clear the Show grid for new diagrams check box (not selected by default).
5. Select or clear the Snap to grid for new diagrams check box (selected by default).
6. Type a value for grid spacing (for inches, the default is 0.125; for centimeters, the default is 0.318; for pixels, the
default is 12.019).
7. Click Apply.
Composer Help
190
Preferences for Voice Applications
GAX Server Preferences
Select Window > Preferences > Composer > GAX Server.
If using the OPM Block for a voice or routing application, you must set GAX Server Preferences.
Tip
GAX refers to a Genesys Administrator Extension (GAX) plug-in application used by Genesys
EZPulse, which is accessible from a web browser. EZPulse enables at-a-glance views of contact
center real-time statistics in the GAX user interface. Composer diagrams connect to GAX using
the preference login credentials for fetching the Audio Resource Management (ARM) parameters
or IDs list configured for the tenant as described in the Configuration options appendix of the
Genesys Administrator Extension Deployment Guide.
The following preferences can be set in the GAX Server Preferences dialog box:
• Server Host Name/IP. Enter the hostname or address of the Application server hosting the GAX Server.
• Port Number. Enter the port number for the GAX Server used in your environment.
• Username. Enter the username defined in the Configuration Database for logging into the GAX server.
• Password. Enter the password defined in the Configuration Database for logging into the GAX server.
Composer Help
191
Preferences for Voice Applications
GRXML File Preferences
Select Window > Preferences > Composer > GRXML Files. The following preferences for GRXML files can be
set in the Preferences dialog box:
Creating Files
1. Under Creating Files, select the Suffix to use for GRXML files from the drop-down list:* grxml
2. Select the Encoding type from the drop-down list. The encoding attribute in a GRXML document specifies the
encoding scheme. The encoding scheme is the standard character set of a language. The GRXML processor uses
this encoding information to know how to work with the data contained in the GRXML document. UTF-8 is the
standard character set used to create pages written in English. Select from the following:
• ISO 10646/Unicode(UTF-8)
• ISO 10646/Unicode(UTF-16) Big Endian
• ISO 10646/Unicode(UTF-16BE) Big Endian
• ISO 10646/Unicode(UTF-16LE) Little Endian
• US ASCII
• ISO Latin-1
• Central/East European (Slavic)
• Southern European
• Arabic, Logical
• Arabic
• Chinese, National Standard
• Traditional Chinese, Big5
• Cyrillic, ISO-8859-4
• Cyrillic, ISO-8859-5
• Greek
• Hebrew, Visual
• Hebrew
• Japanese, EUC-JP
• Japanese, ISO 2022
• Japanese, Shift-JIS
• Japanese, Windows-31J
• Korean, EUC-KR
Composer Help
192
Preferences for Voice Applications
• Korean, ISO 2022
• Thai, TISI
• Turkish
Validating Files
• Select or clear the Warn when no grammar is specified check box (not selected by default).
Source and Syntax Coloring
Source, Syntax Coloring, and Template preferences for GRXML files are set under the XML preferences provided
by Eclipse.
• Use Window > Preferences, expand the Web and XML entry, then expand the XML Files subentry.
Templates
In addition to previewing templates, you can create, edit, and remove selected templates. There are also buttons to:
• Restore a removed template.
• Revert back to a default template
• Import a template.
• Export a template.
Composer Help
193
Preferences for Voice Applications
VXML File Preferences
Tip
Composer natively supports VXML 2.1.
Select Window > Preferences > Composer > VXML Files.The following preferences for VXML files can be set in
the Preferences dialog box:
Creating Files
1. Under Creating Files, select the Suffix to use for VXML files from the drop-down list: *.vxml
2. Select the Encoding type from the drop-down list. The encoding attribute in a VXML document specifies the encoding
scheme. The encoding scheme is the standard character set of a language. The VXML processor uses this encoding
information to know how to work with the data contained in the VXML document. UTF-8 is the standard character set
used to create pages written in English. Select from the following:
• ISO 10646/Unicode(UTF-8)
• ISO 10646/Unicode(UTF-16) Big Endian
• ISO 10646/Unicode(UTF-16BE) Big Endian
• ISO 10646/Unicode(UTF-16LE) Little Endian
• US ASCII
• ISO Latin-1
• Central/East European (Slavic)
• Southern European
• Arabic, Logical
• Arabic
• Chinese, National Standard
• Traditional Chinese, Big5
• Cyrillic, ISO-8859-4
• Cyrillic, ISO-8859-5
• Greek
• Hebrew, Visual
• Hebrew
• Japanese, EUC-JP
Composer Help
194
Preferences for Voice Applications
• Japanese, ISO 2022
• Japanese, Shift-JIS
• Japanese, Windows-31J
• Korean, EUC-KR
• Korean, ISO 2022
• Thai, TISI
• Turkish
Validating Files
• Select or clear the Warn when no grammar is specified check box (not selected by default).
Source, Syntax Coloring, and Templates
Source, Syntax Coloring, and Template preferences for VXML files are set under the XML preferences provided by
Eclipse.
• Use Window > Preferences, expand the Web and XML entry, then expand the XML Files subentry.
This preference allows you to add custom VXML schemas into Composer to be used in namespaces for new VXML
files created through the VXML editor.
Composer Help
195
Preferences for Voice Applications
GVP Debugger Preferences
Select Window > Preferences > Composer > Debugging > GVP Debugger. GVP Debugger preferences are
usually set during callflow post-installation configuration, when you first run Composer. Detailed post-installation
configuration instructions are also provided in the Configure Tomcat and Debugger Settings Cheat Sheet (Help >
Cheat Sheets > Composer > Voice Applications).
Composer Help
196
Preferences for Voice Applications
IIS.NET Preferences
Select Window > Preferences > Composer > IIS/.NET.
IIS/.NET preferences are usually set during post-installation configuration, when you first run Composer. Detailed
post-installation configuration instructions are provided in the Setting IIS Preferences Cheat Sheet (Help > Cheat
Sheets > Composer > Building Voice Applications), and also in Post-Installation Configuration.
Composer Help
197
Preferences for Voice Applications
Setting Context Services Preferences
Go to Window > Preferences > Composer > Context Services to open the Context Services dialog box. If using
a Composer version prior to 8.1.440.18, the dialog box will not contain a Service management section.
Composer Help
198
Preferences for Voice Applications
Composer Help
199
Preferences for Voice Applications
Guidelines for Context Services Preferences
[+] Guidelines for Context Services Preferences
The table below supplies some guidelines for defining Context Services Preferences.
Installation Type
Customer Profile Management
Service Management
Context Services 8.1 or earlier Profile and Service APIs served by
UCS
Set UCS parameters according to
UCS options.
Do not check the Use Genesys
Mobile Service checkbox. Set the
UCS parameters according to UCS
options.
Context Services 8.5 or later - No
Load Balancer
Set UCS parameters according to
UCS options.
Check the Use Genesys Mobile
Service checkbox. Set GMS
parameters according to GMS
options.
Context Services 8.5 or later - Load
Balancer (LB)
Set UCS parameters to match the LB
options.
Check the Use Genesys Mobile
Service checkbox. Set GMS
parameters to match the LB options.
Customer Profile Management Section
1. Use the Guidelines for Context Services Preferences section above for selecting/unselecting the Connect to
Universal Contact Server when designing diagrams box.
2. Under Server Host Name, enter the server host IP address in your Configuration Database, which identifies the
Universal Contact Server. See Tip below.
3. Enter the Server Port number for Universal Contact Server. For the port number, open the Universal Contact Server
Application object in your Configuration Database, go to Options tab, select the cview section, and the port
option.
4. Enter the Base URL for the Context Services server. This should only be configured if you use UCS 8.1. Do not set if
you use UCS 8.5.
5. Under Security Settings, Use secure connection, select Never or TLS if Transport Layer Security is implemented
as described in the Genesys 8.1 Security Deployment Guide.
6. Select Use Authentication to require a user name and password when connecting to Universal Contact Server. If
selected, enter the User and Password fields.
7. Click the Test Connection button (enabled if the Connect to Universal Contact Server when design diagrams box
is checked). Clicking should cause connection successful to appear. If not, check that Universal Contact Server is
running and that the entered host/port values are correct. Other sources of error could be that the base URL
parameter value is incorrect or the UCS version is not 8.1 or higher.
8. Under Context Services object Validation, select one of the following: No validation, Validate if connected, or
Validate. This setting is used and shared by the Profile/Service blocks.
Composer Help
200
Preferences for Voice Applications
Tip
Host/port/URL/tenant are used at design time by Composer (when the Connect to Universal
Contact Server when designing diagrams box is selected). They are also used by Composer
when publishing an interaction process diagram. Composer stores these parameters in the
EnhancedRoutingScript objects. SCXML applications can then read those settings at runtime
to connect to UCS/GMS accordingly.
Service Management Section
1. Select either Use Genesys Mobile Services or Connect to the Universal Contact Server when designing
diagrams. See Guidelines for Context Services Preferences section above for more information. Steps 2, 3, and 4
below relate to UCS or GMS, depending on the Use Genesys Mobile Services box.
2. Under Server Host Name, enter the host IP address. See above note (Tip).
3. Enter the server port number.
4. Enter the Base URL for the host. When using GMS, the base URL is normally /genesys/1/cs.
5. Enter the Tenant. GMS Context Services (optionally) supports multi-tenancy. The tenant to use is passed as a header
(ContactCenterId=x) of the request. This field is disabled when Connect to the Universal Contact Server when
designing diagrams is selected.
6. Under Security Settings, Use secure connection, select Never or TLS if Transport Layer Security is implemented
as described in the Genesys 8.1 Security Deployment Guide.
7. Select Use authentication to require a user name and password. If selected, enter the User and Password fields.
8. Click the Test Connection button. Clicking should cause connection successful to appear. When using GMS, no
connection is made from Composer to GMS. Connections to GMS are initiated only at runtime by ORS/MCP.
9. Under Context Services object Validation, select one of the following: No validation, Validate if connected, or
Validate. This setting and the setting below is used and shared by the Profile/Service blocks.
10. Under Local Settings, select the time zone.
Tip
Composer can successfully communicate with UCS at design stage whatever the UCS mode is
(production or maintenance). However, UCS needs to be in production mode at runtime stage
(when running Context Services SCXML or VXML applications, even when using GVP Debugger).
Composer Help
201
Preferences for Voice Applications
Time Zone Preferences
Composer displays all date/time elements in the user-preferred time zone with the time zone identifier. You can
change the preferred time zone in Window > Preferences > Composer > Context Services.
Composer Help
202
Preferences for Voice Applications
Tomcat Preferences
Select Window > Preferences > Composer > Tomcat Tomcat preferences are usually set during post-installation
configuration, when you first run Composer. Detailed post-installation configuration instructions are provided in the
Configure Tomcat and Debugger Settings Cheat Sheet (Help > Cheat Sheets > Composer > Building Voice
Applications), and also in Callflow Post-Installation Configuration or Workflow Post Installation Configuration.
Composer Help
203
Preferences for Voice Applications
XML Preferences
You can also set XML File Preferences for both routing and voice applications: Window > Preferences > XML >
XML Files. When specifying Encoding formats in the XML Preference page: encoding formats are applicable only
for new File creation using the Template option: (File > New > XML > XML File > Create XML File from an XML
Template > Select XML Template). This applies only to new XML, VXML, CCXML and SCXML files. Existing files
within the Project will not get impacted.
Composer Help
204
Creating Voice Apps for GVP
Creating Voice Apps for GVP
This section provides key information about using Composer to build VoiceXML-based callflow applications after
callflow post installation configuration. You should be well-versed in VoiceXML, XML, and HTML before attempting
to use Composer. You should also have reviewed Getting Started with Voice Applications. To help you get started:
• From within Composer, select Help > Cheat Sheets > Composer to see how some basic voice applications can
be created.
• Your First Application
• Sample Applications & Templates.
To start immediately, see:
• Creating VXML Applications or
• Creating CCXML Applications
Composer Help
205
Creating Voice Apps for GVP
What is GVP and How Do Voice Apps Work
The Genesys Voice Platform (GVP) is a VoiceXML-based media server for network service providers and
enterprise customers.
What is GVP?
At the most basic level, Genesys Voice Platform (GVP) is Interactive Voice Response software (soft IVR). At a more
complex level, GVP is a software suite that integrates a combination of call processing, reporting, management, and
application servers with Voice over IP (VoIP) networks, to deliver web-driven dialog and call control services to
callers.
Using features such as Automatic Speech Recognition (ASR) and Text-to-Speech (TTS), GVP provides a costeffective way to implement automated voice interactions from customers calling your contact center. At the
technology level, GVP is a collection of software components that complement and work with other Genesys
products in order to provide a complete voice self-service solution.
Notes:
Whereas GVP is commonly used in enterprise self-service environments, many other applications of GVP
—including those outside of the contact center—are possible.
A machine on which GVP components are installed is also referred to as a GVP Server in other places in this Help
system.
Use Case
An example flow for a GVP voice self-service application is presented below:
• A customer calling into an IVR would get Prompts / Announcements with a Welcome message. These prompts could
be specific to a region based on incoming DNIS number or customized based on user options, such as a prompt to
select a language.
• The applications could have business control logic allowing Business users to define open and close hours, set
emergency announcements and flags, define special days, and so on. These options could be defined within Genesys
Administrator or Genesys Rules System.
• The application can have the capability to collect user input with multiple options and repeatability to handle no input /
no match capabilities.
• Once the application gets the user input, such as account numnber, this information can be verified against back office
applications or can have the capability to pull data from a Conversation Manager Solution
• Customer information retrieved can be attached to the interaction as user data and could be used for Customer
Segmentation and thereby determine how a particular customer would be managed within the self-service
• The application can provide self-service with Voice Recognition options and DTMF options in menus.
Composer Help
206
Creating Voice Apps for GVP
• The application can be configured to allow users to opt out of the self-service by default or within the predefined flow of
the application.
• When users opt out of the IVR, they could be routed to an external source or to an Agent based on the environment as
defined above. For example, customers could make a choice to get routed to “Last Called Agent” or be routed to any
Agent by pressing repetitive “0”.
• Customers can have defined activities across the flow of the self-service and also be able to set milestones to define
success/failure criteria within each segment of the flow.
How Do Voice Applications Work?
Just as one uses HTML to create visual applications, VoiceXML is a mark-up language one uses to create voice
applications. With a traditional web page, a web browser will make a request to a web server, which in turn will send
an HTML document to the browser to be displayed visually to the user. With a voice application, it's the VoiceXML
interpreter that sends the request to the web server, which will return a VoiceXML document to be presented as a
voice application via a telephone. What makes VoiceXML so powerful is that all of the most popular tools for making
web pages are available for making voice applications. Developers can use technologies they are already familiar
with such as JavaScript, JSP and ASP.NET/C# to generate exciting new voice applications.
The "Big Picture"
Composer is a fully featured VXML application development tool. Users can develop, debug and test their
applications in its Integrated Development Environment (IDE) that provides developer-friendly features to test and
Composer Help
207
Creating Voice Apps for GVP
debug VXML applications and server side web pages. Once the application is ready, it can be exported or manually
deployed using an exported package onto an application server/web server like Tomcat or Microsoft IIS. Once
deployed, GVP can access the voice application’s VXML pages and any server side pages (JSP/ASP.NET) using
HTTP.
When a call comes in to GVP, GVP determines the location of the VXML application through its provisioning data. It
then fetches VXML page(s) and uses its VXML engine to execute them. The results are played back to the caller on
his/her phone. Any server side pages that access databases or web services or other server side pages are
executed on the application server/ web server through server side constructs implemented by Composer.
During development, Composer can use its bundled Tomcat or a local installation of Microsoft IIS as the web server
and make test calls to the application right through GVP from within the IDE. This feature provides a quick way to
test applications by removing the need to of deploy applications to another server and then point GVP to that
location.
Once the application is deployed in production, Composer is no longer in the picture. The application is usually
deployed on its own dedicated web server and application server from where it is accessed by GVP. The web/
application server provides access to all pages and scripts that make up the application and executes any server
side pages of the application.
Composer Help
208
Creating Voice Apps for GVP
Creating CCXML Applications
CCXML (Call Control XML) is a specification developed by the Call Control subgroup of the Voice Browser Working
Group of the W3C. CCXML provides mechanisms for implementing advanced call control functionality in a
standards-based way. It provides the advanced call control features not supported by VoiceXML. You develop
CCXML a little differently than VXML or SCXML applications. Rather than creating flow diagrams, you invoke a
CCXML text editor and enter the code while Composer performs syntax checking. To create a new CCXML file in
Composer perspective:
1. From the menu, select File > New > Other > CallControlXML File.
2. In the wizard, select the Project folder, name the file, and click Finish or Next to use a template.
3. If you click Next, select a template and click Finish. Composer opens the the CCXML editor view.
Composer Help
209
Creating Voice Apps for GVP
Creating VXML Applications
When building any application in Composer, you first need to create a Project. A Project contains all the callflows,
audio and grammar files, and server side logic for your application. By associating a routing strategy with a Project,
you enable Composer to manage all the associated files and resources in the Project Explorer.
Cheat Sheet
Composer provides a cheat sheet to walk you through the steps for building a voice application.
• In the Welcome Screen (Help > Welcome), click the icon for Tutorials and select the Create a Voice Application
tutorial. It will also describe the steps for how to make test calls and debug your application.
• If you are already inside the Workbench and Perspectives, access the same cheat sheet from the Menu bar at the top
by selecting Help > Cheat Sheets, then Create Voice Application from the Building Voice Applications category.
Creating a New Project
You can follow the steps below to create a new Project:
1. For a Java Composer Project to be deployed on Tomcat, click the toolbar button to create a Java Composer Project.
For a .NET Composer Project to be deployed on IIS, click the toolbar icon to create a .NET Composer Project.
2. In the Project dialog box, type a name for your Project.
3. If you want to save the Composer Project in your default workspace, select the Use default location check box. If not,
clear the check box, click Browse, and navigate to the location where you wish to store the Composer Project.
4. Select the Project type:
• Integrated Voice and Route. Select to create a Project that contains both callflows and workflows that
interact with each other; for example a routing strategy that invokes a GVP voice application. For more
information on both voice and routing applications, see What is GVP and How Do Voice Apps Work? and
What Is a Routing Strategy, respectively.
• Voice: Select to create a Project associated with the GVP 8.x. This type of Project may include callflows,
and related server-side files. For more information on this type of Project, see topic, How Do Voice
Applications Work.
• Route: Select to create a Project associated with the Orchestration SCXML Engine/Interpreter and
Universal Routing Server. For more information on this type of Project, see topic, What Is a Routing
Strategy.
5. Click Next.
6. If you want to use templates, expand the appropriate Project type category and select a template for your application.
Templates are sample applications for different purposes. If you want to start from scratch, choose the Blank Project
template and click Next.
Composer Help
210
Creating Voice Apps for GVP
7. Select the default locale and click Next.
8. Optional. If using the in a VoiceXML application, select the Enable ICM checkbox to enable integration. When
checked, ICM variables will be visible in the Entry block. See the ICM Interaction Data block for more information.
9. Click Finish. Composer now creates your new Project. Your new Project folder and its subfolders appear in the Project
Explorer.
10. To view/change settings not included under Preferences, right-click the Project and select Properties.
If you have never created a Composer Project, we recommend starting with Your First Application.
Composer Help
211
Creating Voice Apps for GVP
Creating a New Callflow
To add a new callflow diagram to an existing Composer Project:
1. Click the
button on the main toolbar to create a new callflow. Or use the keyboard shortcut: Ctrl+Alt+O.
2. In the wizard, select the tab for the type of the callflow. There are two main types of callflows in Composer
represented by wizard tabs:
• Main Callflow: Used for the main application where the call will land or be transferred to from another
application.
• Subcallflow: Used for modularizing your applications. It is useful for structuring large applications into
manageable components.
Additionally you will benefit from the automated transaction reports associated with Subcallflows. Action Start and
Action End VAR events are auto-generated for Entry and Exit blocks.
3. Select either Main Callflow or Subcallflow.
4. Select the type of diagram.
5. Click Next.
6. Select the Project.
7. Click Finish.
8. Create the callflow.
Composer Help
212
Creating Voice Apps for GVP
Validation
Composer can validate your diagram files and other source files for completeness and accuracy. For more
information, see Validation.
Composer Help
213
Creating Voice Apps for GVP
Code Generation
The process of generating code creates a properly-formatted VoiceXML file from a callflow diagram built with
Composer or a SCXML file from a workflow diagram. Static pages (pure VXML or SCXML code) are generated in
the src-gen folder of the Composer Project. You can generate code in a couple of ways:
• Select Diagram > Generate Code.
• Click the Generate Code icon
canvas is selected.
on the upper-right of the Composer main window when the callflow/workflow
Note: If your project uses the Query Builder or Stored Procedure Helper-generated queries in DB Data blocks, the
process of code generation will create one SQL file in the db folder for each such DB Data block. These SQL files
will be used at runtime and should not be deleted.
Code Generation for Multiple Callflows
When using the Run as Callflow function, Composer automatically generates the VXML files from the diagram file
that you want to run. When generating code, with the generate code function for a Java Composer Project that has
multiple callflows, Composer attempts to generate the VXML for all the callflows before running (because the
application might move between multiple callflows for subdialogs). However, if one of the callflows has an error,
Composer provides the option to continue running the application anyway, because the erroneous callflow may be
a callflow that’s not used by the one being run (if there are two or more main callflows, for example). When this
happens, the VXML files are basically out of sync with the diagram files and this may affect execution. Genesys
recommends that you fix all errors before running the application.
Composer Help
214
Creating Voice Apps for GVP
Deploying/Testing Your Application
After you have saved your files and generated code for your application, test the application as follows:
1. Deploy the project for testing.
• If deploying a Java Composer Project, Composer bundles Tomcat for running test applications, such as
routing applications. If you configured the Tomcat settings prior to creating your Project, it will be autodeployed on the Tomcat Server. You can double check this by clicking on the name of the project in the
Project Explorer, then right-click and select Project Properties. Select the Tomcat deployment category
and verify that the project is deployed. If not, click Deploy.
• If deploying a .NET Composer Project, deploy your project on an IIS Server. Be sure you have configured
the IIS settings. Click on the name of the project in the Project Explorer, then right-click and select Project
Properties. Select the IIS deployment category and verify that the project is deployed. If not, click Deploy.
2. For Voice Projects, use Run mode to run the application by selecting Run > Run As > Run Callflow, or by right-clicking
on the callflow file name in the Project Explorer and selecting Run As > Run Callflow. The code is generated in the
src-gen folder and the debugger sends the call to your SIP Phone.
3. Accept the call and you will be connected to the application on GVP. The call traces will become visible in the Call
Trace window, and you should hear the voice application run.
Composer Help
215
Creating Voice Apps for GVP
Hello World Sample
Here is a simple voice application to help you get started with Composer. This application says Hello World when
the call is answered.
Simple Text-to-Speech Application
To build a simple text-to-speech (TTS) application that says Hello World to the caller:
1. Create a new Composer Project called Hello World.
2. Add the following blocks from the Basic Blocks Palette to the canvas area: Entry, Prompt, and Exit, then connect them
with Output Links.
3. Select the Entry block, or right-click the Entry block and select Show Properties View from the shortcut menu, if you
want to set any properties (optional).
4. Select the Prompt block, or right-click the Prompt block and select Show Properties View from the shortcut menu.
5. Select the Name property and type a name in the Value field.
6. Select the Prompts property and click the
button.
7. Click the Add button and type a name in the Name field (optional).
8. Select Value in the Type drop-down list (default).
9. Select Text in the Interpret-As drop-down list (default).
10. Type HelloWorld (one word) in the Value field.
11. Click OK.
12. Save the file by selecting File > Save. You will not be able to generate code if you do not save the file.
13. Generate the code by selecting Diagram > Generate Code, or by clicking the Generate Code icon
right of the Composer main window when the callflow canvas is selected.
on the upper-
14. If you get any errors, double-click on the error to get the details and fix the problem. For the Hello World application,
typical problems would be forgetting to add the Hello World prompt or forgetting to link the blocks together.
15. If code generation succeeds, click OK at the confirmation dialog box.
16. Make sure the project is deployed for testing. Composer bundles Tomcat for running test applications. If you
configured the Tomcat settings prior to creating your Composer Project, it will be auto-deployed on the Tomcat
Server. You can double check this by clicking on the name of the project in the Project Explorer, then right-click and
select Project Properties. Select the Tomcat deployment category and verify that the project is deployed. If not, click
Deploy.
17. Select the callflow in the Project callflows folder.
18. Run the application by selecting Run > Run As > Run Callflow, or by right-clicking on the callflow file name in the
Project Explorer and selecting Run As > Run Callflow.
Composer Help
216
Creating Voice Apps for GVP
The code is generated in the src-gen folder and the GVP debugger sends the call to your SIP Phone.
19. Accept the call and you will be connected to the application on GVP. The call traces will become visible in the Call
Trace view, and you should hear Hello World played through the phone.
Adding Blocks
There are a few ways to add blocks from the Palette to the canvas. The most common methods are as follows:
• Click on the block icon on the palette, release the mouse and click on the target location on the canvas area.
• Double-click a block icon on the palette.
• Click on the block icon on the palette, and while holding down the mouse button, drag and drop the block to the
canvas.
Any of these methods will add the new block and you can then type the name of the block on the canvas itself. Click
here to read about block naming restrictions.
Connecting Blocks
Blocks are connected to each other using connection links. There are two types of connection links:
• Output Links used to connect one block's output port to another block's input port, and
• Exception Links used to indicate error or exception conditions by connecting from a block's exception port to another
block's input port.
To add a new Output Link (or Exception Link):
1. Click the Output Link (or Exception Link) icon in the palette.
2. Move the mouse over to the source block. The cursor will change to an upward arrow.
3. Click once on the source block and keep the mouse button pressed. Then drag the mouse onto the target block and
release the mouse button.
This will add the connection link between the two blocks. To use an Exception Link, the source block must have an
exception port defined. This is done by selecting at least one supported exception within the block's Exceptions
property.
Another method for adding an Output Link or Exception Link between two blocks is as follows:
1. Click once on the source block to select it.
2. Hold the Ctrl key and click once on the target block to select it as well.
3. Double-click the Output Link (or Exception Link) icon in the palette to create a connection between the two blocks.
Again, to use an Exception Link, the source block must have an exception port defined.
Composer Help
217
Creating Voice Apps for GVP
The preference Show Connection Ports (in Composer DiagramPreferences) affects how connection links can be
drawn to connect blocks. If it is switched on, links may be drawn directly by dragging from an outport of a block and
dropped onto a block or its inport. This method will work in addition to using the Output link and Exception link tools.
If the setting is switched off, connection ports are not displayed and therefore the method of drawing links
mentioned above is not available.
Composer Help
218
Creating Voice Apps for GVP
Callflow Blocks
A block is the fundamental element of a callflow. Each block defines specific properties and how to handle specific
events. You use the Link tools to connect these blocks in the order that the application should follow. A single
VXML application is generated per callflow. Each block in a callflow becomes a form in the generated VXML
document.
VXML Properties
Each block has custom VoiceXML properties. These properties appear within a Properties view at the bottom of the
Composer window when you right-click the block and then select Show Properties View from the shortcut menu.
For each block, specific properties determine how events are handled. There are several categories of properties
depending on the specific block. The blocks build a callflow or subcallflow. Generate code either from the Toolbar or
from the Diagram menu. Static VXML pages (pure VXML code) are generated in the src-gen folder.
Main Versus Subcallflow
There are two types of callflows:
• Main Callflow: This is the starting callflow for any application.
• Subcallflow: This is a component callflow that can be called from the main callflow or another subcallflow.
Each main callflow or subcallflow application should have at least three blocks:
• The Entry block to start the application. This block also specifies the relative file locations of the audio files for the
generated application code and default exception handling.
• At least one other block to perform specific functions such as passing a call to an agent, creating a log of an activity,
requesting caller input, playing a prompt, and so on.
• The Exit block to end the application, or, for example, the GoTo block to direct the application to another application.
Subcallflows
Subcallflows are used for modularizing applications and for writing components that can be reused by multiple
applications (such as a credit card validation subcallflow). The usage of subcallflows within a main callflow is very
similar to a function call in a programming language. One or more input parameters can be passed to a subcallflow.
Similarly, the subcallflow can return one or more output parameters. Therefore, a subcallflow can be designed to
behave differently depending on the input parameter(s) passed.
Composer Help
219
Creating Voice Apps for GVP
Variables in Callflows
You can define voice application (session) variables using the Entry block Variables property.
Note: For information on user data and GVPSessionID, see the Project Properties dialog box, Composer Callflow
Option.
Types of Variables
Composer supports the following types of variables for callflow diagrams:
• Application Root--Automatically filled from either session.com.genesyslab.userdata or
session.connection.protocol.sip.requesturi based on the Nnn-CTIC or CTIC flow. Also see the Entry
Application Root Property.
• System --Pre-defined application variables (Entry block Variables property) hold Project and application-related
values. While you cannot delete System variables, you can have your application modify the values.
Composer Help
220
Creating Voice Apps for GVP
• User--User-defined (Input) custom variables that you create by clicking the Add button in the Set Application
Variables dialog box above and selecting User. Your application can delete and modify these variables supplied as
input to the called diagram. During runtime, these input variables get auto-filled from the calling context. Typically
these variables are created on the SubCallflow side to notify the MainCallflow about the Parameter-passing details
while designing the application flow. Composer does auto-synchronization of the input variables in the Subdialog
block. Input variables are also used on the MainCallflow while invoking the VoiceXML application from workflows in
case of Voice Treatment execution - computer telephony integration (CTI) scenario (Play Application).
• SubCallflow--Automatically filled from the VXML subdialog-invoking methodology.
Composer Help
221
Creating Voice Apps for GVP
Variable Versus Static Data
Many blocks enable the use of variables rather than static data. For example, the Prompt block can play the value
of a variable as Text-to-Speech. Variables whose values are to be used in other blocks must be declared here so
that they appear in the list of available variables in other blocks. The value collected by an Input block or a Menu
block is saved as a session variable whose name is the same as the block Name. Also see information on the
AppState variable used by the DB Data block.
Entry Block Variables
Entry block variables can access User Data (attached data from a routing workflow) from
session.com.genesyslab.userdata and SIP Request-URI parameters from
session.connection.protocol.sip.requesturi session variables.
Request URi parameters created in IVR Profiles during the VoiceXML application provisioning are passed to the
Composer generated VoiceXML application as request-uri parameters in the
session.connection.protocol.sip.requesturi session array. An Entry block variable can use these
parameters by setting the following expressions to the variable values: typeof
session.connection.protocol.sip.requesturi['var1'] == 'undefined' ?
"LocalDefaultValue" : session.connection.protocol.sip.requesturi['var1'].
If parameters are set as part of IVR Profiles provisioning in the Genesys VoiceXML provisioning system, and if
these parameters have the same names as variables set in the Entry block's Variables property with the above
mentioned sip.requesturi expression, then the SIP-Request-URI parameters will take precedence over the
user variable values set in the Entry block.
Important
For more information on valid values and syntax for the the gvp.services-parameter section, refer
to page number 121 in the GVP 8.5 User's Guide.
IVR profiles for GVP can be created using the Genesys Administrator. For more information, refer to the Voice
Platform Solution Guide and the gvp.services-parameter section in the GVP 8.5 User's Guide.
Attaching Results to User Data
While you can assign Classify object results to a variable, Genesys does not recommend this. The recommended
way of dealing with the classification results is to attach them to the interaction. Then User Data will have the keys
listed in the table below with the corresponding values returned by Classification Server. As an example, User Data
would have the following pairs after the attachment:
Composer Help
222
Creating Voice Apps for GVP
Parameter
Value
CtgId
00001a05F5U900QW
CtgRelevancy
95
CtgName
Cooking
CtgId_00001a05F5U900QW
95
CtgId_00001a05F5U900QX
85
CtgId_00001a05F5U900QY
75
CtgId_00001a05F5U900QZ
65
Composer Help
223
Creating Voice Apps for GVP
VXML Properties
This page provides details about the properties used to manage platform behavior: Note: Properties apply to their
parent tag and all the descendants of the parent. A property at a lower level overrides a property at a higher level. If
you already have GVP, note that the properties in defaults-ng.vxml will be (re)set as documented below only when
a system is newly installed. If you simply upgrade from a previous release, the old values will be preserved. This
means that any manual configuration of defaults-ng.vxml will be saved when you upgrade. It also means that when
moving to newer versions in which GVP uses different default values, the defaults will not be reset unless you newly
install (rather than upgrade).
Receive External Message
Property
Description
Default Value
This property specifies whether an
external message will be received
asynchronously. The valid values are:
com.genesyslab.
(GVP extension)
• True--If the value equals true,
external messages will be
received asynchronously.
false
• False--If the value equals false,
external messages will be
received synchronously.
This property specifies whether an
external message will be queued or
discarded. The valid values are:
com.genesyslab.
(GVP extension)
• True--If the value equals true,
external messages will be
queued. The external message is
reflected to the application in the
application.lastmessage$
variable (an ECMAScript object).
• False--If the value equals false,
external messages will not be
delivered as a VoiceXML event
(they will be discarded).
false
Note:If no external messages have been
received, application.lastmessage$ is
ECMAScript undefined. Only the last received
message is available. To preserve a message
for future reference during the lifetime of the
application, copy the data to an applicationscoped variable.
Composer Help
224
Creating Voice Apps for GVP
Speech Recognizer
Property
Description
Default Value
confidencelevel
Specifies the speech recognition
confidence level. Values range from
0.0 (minimum confidence) to 1.0
(maximum confidence). Recognition
results are rejected (a nomatch event
is thrown) if the confidence level of
the results is below this threshold.
0.5
sensitivity
Specifies the level of sensitivity to
speech. Values range from 0.0 (least
sensitive to noise) to 1.0 (highly
sensitive to quiet input).
0.5
A hint specifying the desired balance
between speed versus accuracy
when processing a given utterance.
Values range from 0.0 (fastest
recognition) to 1.0 (best accuracy).
speedvsaccuracy
Note: The Nuance MRCP engine uses the
value of the speedvsaccuracy property to set
its proprietary rec.Pruning parameter, using the
following algorithm: If x is the speedvsaccuracy
value, and x <= 0.5 then rec.Pruning = (x *
400) + 600 else rec.Pruning = (x * 800) + 400
0.5
completetimeout
The length of silence required
following user speech before the
speech recognizer finalizes a result
(either accepting it or throwing a
nomatch event). The
completetimeout is used when the
speech is a complete match of an
active grammar and no further words
can be spoken.
1s
incompletetimeout
The length of silence required
following user speech before the
speech recognizer finalizes a result
(by either accepting it or throwing a
nomatch event). In contrast to
completetimeout, the
incompletetimeout is used when the
speech is an incomplete match to an
active grammar, or when the speech
is a match but it is possible to speak
further.
1s
maxspeechtimeout
The maximum duration of user
speech. If this time elapses before
the user stops speaking, the
maxspeechtimeout event is thrown.
Note: Refer to your ASR engine
documentation for support details.
60s
Composer Help
225
Creating Voice Apps for GVP
Maximum number of results returned
by the recognizer. Also represents
the maximum size of the
application.lastresult$ array.
1
Property
Description
Default Value
interdigittimeout
The timeout period allowed between
each digit when recognizing DTMF
input.
3s
termtimeout
The terminating timeout to use when
recognizing DTMF input.
0s
termchar
The terminating DTMF character for
DTMF input recognition.
#
DTMF Recognizer
This property makes it possible to
use the DTMF Recognizer that
comes with your ASR Engine instead
of using the one provided by
Genesys. The valid values are:
• True--If the value equals true,
offboard DTMF recognition is
com.genesyslab.dtmf.offboard_recognition enabled for the call.
(GVP extension)
• False--If the value equals false,
offboard DTMF recognition is
disabled for the call.
False
Note:If the value is invalid, an error.semantic
will be thrown. Note: The recognizer will use
the engine specified by the ASR engine
property. Note: If you switch engines in mid
call, any buffered digits will be lost.
Prompt and Collect
Property
Description
Default Value
Determines which input methods to
use. Value is a space separated list
of input methods:
inputmodes
• dtmf--allows DTMF sequences as
input
dtmf voice
• voice--allows voice as input
Composer Help
226
Creating Voice Apps for GVP
timeout
Once the prompt has finished
playing, the length of time to wait, if
no speech or dtmf input occurs,
before throwing a noinput event.
10s
Specifies universal command
grammars to activate. Value is a
space-separated list of all or fewer of
the following command grammars:
• cancel--If this grammar is
activated, and the caller says
"cancel" (or equivalent phrase
configured for another language),
the cancel event is thrown.
universals
• exit--If this grammar is activated,
and the caller says "exit" (or
equivalent phrase configured for
another language), the exit event
is thrown.
none
• help--If this grammar is activated,
and the caller says "help" (or
equivalent phrase configured for
another language), the help event
is thrown.
A setting of none disables universal
commands. A setting of all can be used as a
short form for activating all 3 command
grammars.
Specifies the name of the ASR
(Automatic Speech Recognition)
engine to use. For details about
available names, consult with your
platform administrator.
com.genesyslab.asrengine
(GVP extension)
com.genesyslab.ttsengine
(GVP extension)
Note: If this property is not specified, the per
call configuration value specified in the
vxmli.asr.defaultengine property (see the
Genesys Voice Platform 8.1 Configuration
Options Reference) will be used. The default is
empty string (""). Note: It is valid to specify a
particular engine only if that engine is installed
for the platform running the application.
Otherwise, an error.asr.unknownengine event
will be thrown. Note: The configured name for
SpeechWorks OSR must be speechworks,
otherwise a recognition error will occur.
Specifies the name of the TTS (Textto-Speech) engine to use (that is, the
voice). For details about available
names, consult with your platform
administrator.
platform-specific
platform-specific
Note: If this property is not specified, the per
call configuration value specified in the
Composer Help
227
Creating Voice Apps for GVP
vxmli.asr.defaultengine property (see the
Genesys Voice Platform 8.1 Configuration
Options Reference) will be used. Note: It is
valid to specify a particular engine only if that
engine is installed for the platform running the
application. Otherwise, an
error.tts.unknownengine event will be thrown.
com.genesyslab.
(GVP extension)
com.genesyslab.utterancedest
(GVP extension)
recordutterance
(VoiceXML 2.1 feature)
recordutterancetype
(VoiceXML 2.1 feature)
Specifies whether a beep should be
played at the end of prompts in fields,
when bargein is disabled. When
bargein is enabled, this attribute has
no effect (there is never a beep).
Platform owners can access the
audio file (endofprompt.vox) in the
configured audio path.
false
Specifies the path of the directory to
use for saved utterance audio files.
The value will be resolved to the
configured audio path. This property
can be used with the recordutterance
property. Note: If you specify the
utterancedest and enable the
savetmpfiles property, the utterance
will only be saved under the
utterancedest path. It will not also be
saved with the other tmp files.
files are written to the tmp directory
(may or may not be saved,
depending on whether the
savetmpfiles property is enabled)
This property tells the platform to
enable recording while
simultaneously gathering input from
the user. Set to true to enable user
utterance to be recorded. Set to false
otherwise. Upon completion of user
input, the recording shadow variable
will be set. Note: The <vxml>
version attribute must be specified as
2.1 (or higher) to use this property.
Note: If the recordutterance property
has been specified in a VoiceXML 2.0
page, it will behave as if it is a
VoiceXML 2.1 page.
false
This property specifies the audio
format to use for recording
utterances. Only used with the
recordutterance property. GVP
currently supports the following types:
audio/basic
• audio/basic--Raw (headerless)
8kHz 8-bit mono mu-law [PCM]
single channel. (G.711)
Composer Help
228
Creating Voice Apps for GVP
• audio/x-alaw-basic--Raw
(headerless) 8kHz 8-bit mono Alaw [PCM] single channel.
(G.711)
• audio/x-wav--WAV (RIFF header)
8kHz 8-bit mono mu-law [PCM]
single channel.
• audio/x-wav--WAV (RIFF header)
8kHz 8-bit mono A-law [PCM]
single channel.
Set to true to allow the special OSR
variable, SWI_literalTimings, to be
com.genesyslab.asr.get_swi_literaltimings
accessed through the
application.lastresult$ variable.
(GVP extension)
Requires com.genesyslab.fieldobject
to be set to true. Available with
SpeechWorks ASR only.
com.genesyslab.tts.<Your vendor
specific name>
(GVP extension)
false
Users will be able to define TTS
vendor-specific global properties in
the Entry block. The exact set of
property names is not known to
Composer and therefore no
validations will be performed on the
names. The general format of these
properties will follow this pattern:
com.genesyslab.tts.<property_name>
When using GVP's MRCP direct
integration with an ASR engine, the
VoiceXML application can use this
property format to specify arbitrary
vendor-specific parameters to be sent
to the ASR engine.
com.genesyslab.asr.<Your vendor
specific name>
(GVP extension)
In the property name, <Your vendor specific
name> is replaced with the actual vendorspecific parameter name; and the value of the
property must be a valid value for that vendorspecific parameter. For example, to set
Nuance's rec.GrammarWeight parameter to
10: <property
name="com.genesyslab.asr.rec.GrammarWeight"
value="10"/> Notes:
parameter-specific
• Vendor parameter names and
values could be case-sensitive.
Refer to the vendor
documentation to ensure you are
using valid names and values.
• You can only set a vendor
parameter using <property> if the
parameter can be set by the ASR
engine at runtime. Refer to the
Composer Help
229
Creating Voice Apps for GVP
vendor documentation to confirm
which parameters are runtimesettable.
• Once a vendor parameter is set
using <property>, the setting will
stay in effect for the remainder of
the call, unless it is set again later
in the VoiceXML application.
Many of OSR's swiep_*/swirec_*
configuration parameters can also be
set as VoiceXML properties.
To find out whether a particular parameter can
be set as a property, look it up in the OSR
Reference Manual. If the line under the
parameter name includes "API" (and if the
description mentions SWIepSetParameter() or
SWIrecRecognizerSetParameter()), then it can
be set as a property. Some of the parameters
that are commonly used are:
swiep_*/swirec_*
(GVP extension)
• swirec_suppress_event_logging
• swirec_suppress_waveform_logging parameter-specific
• swirec_audio_environment (OSR
2.0+ only)
• swirec_backward_compatible_confidence_scores
(OSR 2.0+ only)
See the OSR Reference Manual for details
about the values/usage for each parameter.
These properties are specific to Nuance OSR,
and are only supported in GVP's MRCP native
integration with OSR. (They are not supported
in GVP's MRCP direct integration with OSR,
using SWMS.)
com.genesyslab.logtoasr
(GVP extension)
If set to true, this will enable GVP to
log data directly to the ASR engine's
log. Note: If this property is true, then
the <log> tag's level attribute is
ignored.
true
Prompt and Collect--Barge-in
GVP supports Recognition Based Barge-in.
Property
Description
Default Value
bargein
Controls whether user input can be
collected before prompts have
finished playing:
true
Composer Help
230
Creating Voice Apps for GVP
• true--Any user input can barge in
during prompts.
• false--No user input can barge in
during prompts.
Specifies the bargein type:
• speech--Any user utterance can
barge in the prompt.
bargeinype
• hotword (equivalent to
recognition)--Only user input that
matches a grammar can barge in
on the prompt.
speech
Note: Not all bargeintypes are supported with
all ASR engines.
MARK Tag
Composer and GVP support the use of the MARK tag from the VXML Specs to detect whether or not a barge-in
was detected. The Mark tag in VXML is used to set the place in a sequence of prompts and can be used to detect
the barge-in position during the playback of prompts.
As described in the GVP 8.1 Legacy Genesys VoiceXML 2.1 Reference Manual, the variable
application.lastresult$ is a read-only session variable that holds information about the last recognition to
occur within this application. Additionally, application.lastresult$[i] provides the ability to use an array of
tags when using N-best recognition.
• The GVP 8.1 Legacy Genesys VoiceXML 2.1 Reference Manual provides a good reference for the differences
between VXML 2.0 and 2.1 tags.
• The GVP 8.1 Application Migration Guide provides a reference for the delta between the GVP interpreters and
mentions the GVP-specific platform extensions.
• Lastly, the GVP Voice XML Help describes the VoiceXML 2.1 standards and tags supported by GVP version 8.0 and
later.
Prompt and Collect--Wakeup Word Spotting Recognition Mode
In GVP's MRCP native integration with Nuance OSR, OSR's "magic word" feature is exposed through the following
properties.
Property
Description
Default Value
com.genesyslab.wakeupword
Specifies whether Wakeup Word
Spotting should be used for input in
fields, menus, and initials. If set to
false
(GVP extension)
Composer Help
231
Creating Voice Apps for GVP
true, recognition is only performed if
input length is between a minimum
and maximum length, and (only with
Nuance OSR 2.0+) if input matches a
grammar.
com.genesyslab.wakeupwordminimum If com.genesyslab.wakeupword is set
to true, this specifies the minimum
(GVP extension)
length that input must be in order for
recognition to be performed.
com.genesyslab.wakeupwordmaximum If com.genesyslab.wakeupword is set
to true, this specifies the maximum
(GVP extension)
length that input may be in order for
recognition to be performed.
Prompt and Collect--Magic Word / Selective Barge-in Recognition Modes
With Nuance SWMS 3.1.4+, OSR's "magic word" and "selective barge-in" features are exposed through the
following properties. GVP does not have default values for the following properties. If the application specifies them,
GVP passes the specified values through to SWMS. Otherwise, GVP does not pass anything to SWMS - in which
case, SWMS would use its own default settings (see the SWMS documentation for these details).
Property
Description
Default Value
Set to hotword to enable the OSR
selective barge-in or magic word
recognition mode:
• Selective Barge-in--Only user
input that matches a grammar
can barge in on the prompt.
(This mode is enabled if
com.genesyslab.ASR.HotwordMax-Duration is set to 0.)
com.genesyslab.ASR.RecognitionMode
(GVP extension)
• Magic Word--Only user input that
matches a grammar, and whose
duration is between a minimum
and maximum length, can barge
in on the prompt. (The minimum
and maximum utterance lengths
are specified by
com.genesyslab.asr.HotwordMin-Duration and
com.genesyslab.asr.HotwordMax-Duration.)
For example: <property
name="com.genesyslab.asr.RecognitionMode" value=""hotword""/> Note: After setting
this property, the specified mode will remain in
effect for all subsequent recognitions (even if
the property is not set in subsequent input
fields), unless a new mode is explicitly set. So,
Composer Help
232
Creating Voice Apps for GVP
to switch back to normal recognition mode after
using one of the above hotword modes, the
application must explicitly set this property
back to normal (and not set any of the three
related properties listed below). For example:
<property
name="com.genesyslab.asr.RecognitionMode" value=""normal""/> (Available with
Nuance SWMS 3.1.4+ only.)
com.genesyslab.asr.Hotword-MinDuration
(GVP extension)
If com.genesyslab.asr.RecognitionMode is set to hotword, this specifies
the minimum length (in ms) that input
must be in order for recognition to be
performed. For example:
<property
name="com.genesyslab.asr.Hotword-MinDuration" value=""50""/> If
com.genesyslab.asr.Hotword-Max-Duration is
set to 0, this property will be ignored.
If com.genesyslab.asr.RecognitionMode is set to hotword, this specifies
the maximum length (in ms) that input
may be in order for recognition to be
performed. For example:
com.genesyslab.asr.Hotword-MaxDuration
(GVP extension)
com.genesyslab.asr.HotwordConfidence-Threshold
(GVP extension)
<property
name="com.genesyslab.asr.Hotword-MaxDuration" value=""2000""/> If this property is
set to 0, the OSR selective barge-in mode will
be enabled (for example, no minimum and
maximum duration constraints are used, so
com.genesyslab.asr.Hotword-Min-Duration will
be ignored). Otherwise, the OSR magic word
mode will be enabled (for example, the
minimum and maximum duration constraints
specified by com.genesyslab.asr.Hotword-MinDuration and com.genesyslab.asr.HotwordMax-Duration will be used).
If com.genesyslab.asr.RecognitionMode is set to hotword, this specifies
the speech recognition confidence
level that should be used. Values
range from 0 (minimum confidence)
to 1000 (maximum confidence).
Recognition results are rejected (a
nomatch event is thrown) if the
confidence level of the results is
below this threshold.
For this property to take effect, you must also
set the standard confidencelevel property to an
equivalent decimal percentage. For example:
<property
name="com.genesyslab.asr.HotwordConfidence-Threshold" value=""100""/>
<property name="confidencelevel"
value="0.1"/>
Composer Help
233
Creating Voice Apps for GVP
Fetching
Property
Description
Default Value
Defines when audio files can be
fetched:
audiofetchhint
• prefetch--audio file may be
downloaded when the page is
loaded
prefetch
• safe--only load the audio file when
needed
Currently, all audio is fetched when needed.
audiomaxage
Defines maximum acceptable age, in
seconds, of cached audio resources.
undefined
audiomaxstale
Defines maximum staleness, in
seconds, of expired cached audio
resources.
undefined
Defines when XML data files can be
fetched:
datafetchhint
• safe--only load the XML data file
when needed
safe
Currently, all data files are fetched when
needed.
datamaxage
Defines maximum acceptable age, in
seconds, of cached XML resources.
undefined
datamaxstale
Defines maximum staleness, in
seconds, of expired cached XML
resources.
undefined
Defines when next document can be
fetched:
documentfetchhint
• safe--only load the next document
when needed
safe
Currently, all documents are fetched when
needed.
documentmaxage
Defines maximum acceptable age, in
seconds, of cached documents.
undefined
documentmaxstale
Defines maximum staleness, in
seconds, of expired cached
documents.
undefined
grammarfetchhint
Defines when grammar files can be
fetched:
prefetch
Composer Help
234
Creating Voice Apps for GVP
• prefetch--grammar file may be
downloaded when the page is
loaded
• safe--only load the grammar file
when needed
Currently, all grammars are fetched when
needed.
grammarmaxage
Defines maximum acceptable age, in
seconds, of cached grammar
resources.
undefined
SpeechWorks OSR 1.x does not support this.
grammarmaxstale
Defines maximum staleness, in
seconds, of expired cached grammar
resources.
undefined
SpeechWorks OSR 1.x does not support this.
Defines when objects can be fetched:
objectfetchhint
• prefetch--object may be
downloaded when the page is
loaded
prefetch
• safe--only load the object when
needed
objectmaxage
Defines maximum acceptable age, in
seconds, of cached object resources.
undefined
objectmaxstale
Defines maximum staleness, in
seconds, of expired cached object
resources.
undefined
Defines when scripts can be fetched:
scriptfetchhint
• prefetch--script may be
downloaded when the page is
loaded
prefetch
• safe--only load the script when
needed
Currently, all scripts are fetched when needed.
scriptmaxage
Defines maximum acceptable age, in
seconds, of cached script resources.
undefined
scriptmaxstale
Defines maximum staleness, in
seconds, of expired cached script
resources.
undefined
fetchaudio
The URI of audio to play while waiting
for documents to be fetched.
builtin:background_audio.wav
Composer Help
235
Creating Voice Apps for GVP
fetchaudiodelay
The length of time to wait at the start
of a fetch delay before playing
fetchaudio.
1s
fetchaudiominimum
The minimum length of time to play
fetchaudio, once started, even if the
fetch result arrives in the meantime.
0s
fetchtimeout
Timeout for fetches. This is not
supported when using
Nuance(MRCP). An error.badfetch is
thrown when a fetch duration
exceeds fetchtimeout.
30s
Audio Control
The Audio Control Feature is an extension to VoiceXML. Note: Audio control functions are only applied to the
currently playing prompt, and not across the queued prompt list. Note: These properties may not work properly for
TTS. <tbody></tbody>
Property
Description
Default Value
com.genesyslab.noaudiocontrol
If this property is set (to any value),
the com.genesyslab.audiocontrol
property is disabled.
undefined
(Only used if
com.genesyslab.noaudiocontrol is
undefined.) Set to true to enable
Audio Control during playing of audio.
Set to false to disable the feature.
true
Sets the duration of audio to be
skipped when using the skipahead/
skipback features. Note: Time units (s
or ms) must be provided.
6000ms
Sets the DTMF button for skipping
ahead in the audio file/TTS. The
duration skipped depends on the
value of the
com.genesyslab.audio.skipduration
property. If set to "-" or undefined, this
feature is disabled.
undefined
Sets the DTMF button for rewinding
the audio file/TTS. The duration
rewound depends on the value of the
com.genesyslab.audio.skipduration
property. If set to - or undefined, this
feature is disabled.
undefined
Sets the DTMF button for turning
volume up. If set to - or undefined,
this feature is disabled. This is not
supported with VoIP.
undefined
(GVP extension)
com.genesyslab.audiocontrol
(GVP extension)
com.genesyslab.audio.skipduration
(GVP extension)
com.genesyslab.audio.skipahead
(GVP extension)
com.genesyslab.audio.skipback
(GVP extension)
com.genesyslab.audio.louder
(GVP extension)
Composer Help
236
Creating Voice Apps for GVP
com.genesyslab.audio.softer
(GVP extension)
com.genesyslab.audio.pause
(GVP extension)
com.genesyslab.audio.stop
(GVP extension)
com.genesyslab.audio.next
(GVP extension)
com.genesyslab.audio.faster
(GVP extension)
Sets the DTMF button for turning
volume down. If set to - or undefined,
this feature is disabled. This is not
supported with VoIP.
undefined
Sets the DTMF button for pausing
playback temporarily, until the pause
button is pressed a second time. If
set to- or undefined, this feature is
disabled.
undefined
Sets the DTMF button for stopping all
queued audio playback. If set to - or
undefined, this feature is disabled.
undefined
Sets the DTMF button for interrupting
the current audio playback, and
starting the next audio playback in
the queue. If set to - or undefined,
this feature is disabled.
undefined
Sets the DTMF button for increasing
the rate of audio playback. If set to or undefined, this feature is disabled.
undefined
This is not supported with VoIP.
com.genesyslab.audio.slower
(GVP extension)
Sets the DTMF button for decreasing
the rate of audio playback. If set to or undefined, this feature is disabled.
undefined
This is not supported with VoIP.
Miscellaneous
Property
Description
Default Value
com.genesyslab.loglevel
The loglevel limits execution of <log>
tags to the ones whose level attribute
have a value up to (including) the
loglevel value.
1
(GVP extension)
com.genesyslab.private
This property enables data masking.
This means that private data like
credit card numbers, social insurance
numbers, and so on are converted to
asterisks (for example, 123 would be
converted to ***). The valid values
are:
• True--If com.genesyslab. equals
true, data masking is enabled.
The data that is masked includes:
- asr_trace (result) - dtmf (digit) input_end (phrase) - prompt
Composer Help
237
Creating Voice Apps for GVP
_play (all) - subdialog_start
(param_value and URL query
string) - eval_cond - eval_expr
(expression and value) - eval_var
(expression and value) - submit
(namelist and URL query string) link (URL query string) parse_error (URL query string) wf_arrived (URL query string) wf_lookup (URL query string) event_handler_enter (URL query
string) - filling (value) filled_enter (namelist)
• False--If com.genesyslab. equals
false, data masking is not
enabled.
Note: The default value is false. Note: This
attribute is overridden by the gvp:private
attribute (in the <block>, <field>, <transfer>,
<record>, <subdialog>, and <initial> tags).
Platform
The following properties are specific to GVP. The first three are useful for debugging purposes.
Property
Description
Default Value
com.genesyslab.maintainer.sendwhen
This property indicates if the
maintainer email message should be
sent. Valid values are: always, never,
on_message.
on_message
com.genesyslab.savetmpfiles
The value is interpreted as a string
with a list of words. The words may
be: all, none, prompts, inputs, pages,
recordings. When a list of keywords
is specified, the superset of all the
keywords are saved. In particular,
this means if someone specifies
<property name=
"com.genesyslab.savetmpfiles"
value="none inputs" /> it is
equivalent to specifying <property
name=
"com.genesyslab.savetmpfiles"
value="inputs"/>.
none
com.genesyslab.savetmpfilesmode
This property two valid
values:immediate or delayed. This
property only takes effect when
com.genesyslab.savetmpfiles is
immediate
Composer Help
238
Creating Voice Apps for GVP
enabled. If set to immediate the files
are written to disk immediately. If set
to delayed the files are stored in
memory.
com.genesyslab.onexit.keeptmpfiles
This property specifies whether or not
keep temp files around after the
VoiceXML session has ended. This
property will only have meaning if at
least one temp files has been saved.
If this value is false, all temp files on
the disk will be erased, and any files
in memory will be discarded. If this
value is true, all temp files on disk will
be kept, and files in memory will be
flushed to disk.
true
com.genesyslab.maxrecordtime
Defines the default (also the upper
limit) for the maxtime attribute of the
<record> tag.
10 minutes
Order of Precedence
To find the property value that will take effect at a particular point in an application, the current form item is checked
first (to see if the property is defined there), and enclosing scopes are checked as necessary. Here is the full order
of precedence for properties:
1. First, look for a property in the current form item (for example, in <field>, <record>, <transfer>, and so on.). If found,
use its value.
2. If not found, check the current form (for example, lookdirectly under <form> or <menu>). If the property is found, use
its value.
3. If not found, check the current document (for example, look directly under <vxml>). If the property is found, use its
value.
4. If not found, check the current document's application root document (if specified by <vxml application="..."> in the
current document). If the property is found, use its value.
5. Finally, if not found in any of the above, use the setting from the interpreter context for the current call, which includes
the settings in the defaults file (for example, defaults.vxml) and hard-coded default values that are used if no value is
configured anywhere else.
Composer Help
239
Voice Block Palette Reference
Voice Block Palette Reference
Composer's palette contains the diagram building blocks. The block categories that appear depend on what tab is
selected above the design area or what workflow or callflow is selected in the Project Explorer. For example, to see
blocks for creating GVP voice applications, click a *.callflow tab or a callflow in the Project Explorer.
The palette for GVP voice application blocks accesses the following types of blocks:
• Basic Blocks
• Database Blocks
• Computer Telephony Integration (CTI) Blocks
• External Message Blocks
• GVP Blocks
• Reporting Blocks
• Server-Side Blocks
• Outbound Blocks
Also see Single Session Treatments.
Composer Help
240
Voice Block Palette Reference
Tip
Should you accidentally cause the palette to disappear, click the Hide/Show Palette triangle
Composer Help
241
Voice Blocks Basic
Voice Blocks Basic
The Basic Blocks provide the GVP VoiceXML element functionalities used to perform IVR activities and GVP
platform extensible object elements:
Basic Blocks
Block Name
Usage
Assign Block
Assign a computed value/expression or an entered value
to a variable
Branching Block
Specify multiple application routes based on a branching
condition
Disconnect Block
Explicitly hang-up a phone call
End FCR Block
Indicate the end of a recording segment
Entry Block
Begin an application. Only one Entry block can be present
in each application.Sets global error (exception) handlers.
Defines all global application-level properties, global
variables (which appear in the list of available variables
for other blocks in the diagram), and global commands.
Sets default application scripts and parameters.
Exit Block
End the application
Go To Block
Direct the application to a specific URL
Grammar Menu Block
Uses Grammar Builder files to determine the input options
Input Block
Accepts DTMF or speech input from callers
Log Block
Record information about an application
Looping Block
Iterate over a sequence of blocks multiple times
Menu Block
Collects DTMF and/or speech input from the caller
Prompt Block
Play specific data to the caller
Raise Event Block
Throw custom events
Record Block
Record voice input from the caller
Release ASR Engine
Control when the ASR engine(s) being used in the current
session will be released
Set Language Block
Changes the current active language from that set in the
Entry block or a previous Set Language block
SNMP Block
Send SNMP traps from the application using the NGI
‘dest’ extension attribute of the <log> tag
Start FCR Block
Indicate the start of a recorded audio file
Subdialog Block
Invoke VoiceXML subdialogs, which are a mechanism for
reusing common dialogs and building libraries of reusable
applications.
Transfer Block
Transfer the call to another destination
Composer Help
242
Voice Blocks Basic
Block Name
VXML Form Block
Usage
Embed VXML code directly into a callflow diagram with
using <subdialog>
Use the Link tools to connect the blocks.
Composer Help
243
Voice Blocks Basic
Assign Common Block
Use the Assign common block to assign a computed value/expression or an entered value to a variable.
See the Query Services block Service Data property for an example of using the Assign block and Expression
Builder to parse a JSON string and assign the service data to a variable.
Function getSIPHeaderValue(headername) returns the SIP header value associated with the given SIP
headername. You may wish to use this function with the Assign block. By default, this option is disabled for
backward compatibility. To set this preference, right-click the Project, select Properties, Default Logging and
check Log Assign block Variable assignments. Applicable for both Java and .NET Projects.
Starting with 8.1.440.18, Composer Assign blocks are enhanced to generate logging statements as part of code
generation. With this enhancement ORS and MCP logs will show the Assign variables and expressions.
A new Project-level property, Default Logging, is added to control this logging capability. By default, this option is
disabled for backward compatibility. Applicable for both Java and .NET Projects.
Composer Help
244
Voice Blocks Basic
The Assign block has the following properties:
Name Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Block Notes Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Assign Data Property
This property assigns a value (expression) to a variable. You select the variable and then enter an expression,
either a literal or one created in Expression Builder.
To select a variable and assign a value:
Composer Help
245
Voice Blocks Basic
1. Click the Assign Data row in the block's property table.
2. Click the
button to open the Assign Data to Variables dialog box.
3. Click in the Variable field to display a down arrow.
4. Click the down arrow and select a variable whose value will be evaluated to determine the branching condition. Default
application variables are described in the Entry block for voice applications and the Entry block for routing
applications. You can also use a custom variable.
5. Click under Expression to display the
button.
6. Click the
button to open Expression Builder. For examples of how to use Expression Builder, see the Expression
Builder topic.
7. Select an operator for the branching condition.Your variable's value will be equal to (==), less than (<), greater than
(>). less than or equal to (<=), greater than or equal to (>=) or not equal to (!=) to value you enter in the Expression
field.
8. In the Expression field, create a value to compare to the variable's value. Enclose the value in single quotes (' ').
9. Click the
button to validate the expression. Syntax messages appear under the Expression Builder title.
10. Click OK to close Expression Builder and return to the Assign Data to Variables dialog box.
11. You can make multiple variable/value assignments. Click the Add button if you wish to add more assignments and
repeat the steps above.
Editing Expressions
To edit an expression:
1. Click its row under Expression in the Assign Data to Variables dialog box. This causes the
2. Click the
button to appear.
button to re-open Expression Builder where you can edit the expression.
Exceptions Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
• For callflows, invalid ECMAScript expressions may raise the following exception event: error.semantic.
• For workflows, invalid ECMAScript expressions may raise the following exception events:
error.script.SyntaxError, and error.script.ReferenceError.
You can use custom events to define the ECMAScript exception event handling.
Composer Help
246
Voice Blocks Basic
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under CommonProperties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
247
Voice Blocks Basic
Branching Common Block
The Branching block is used for both routing and voice applications. Use the Branching block as a decision point in
a callflow or workflow. It enables you to specify multiple application routes based on a branching condition.
Depending on which condition is satisfied, the call follows the corresponding application route. A default path is
automatically created once the conditions have been defined. If the application cannot find a matching condition, it
routes the call to the default flow.
Date/Time Functions
You can open Expression Builder from the Condition property and access the following date/time URS functions
(Data Category=URS Functions > Data Subcategory=genesys):
• _genesys.session.timeInZone(tzone)
• _genesys.session.dayInZone(tzone)
• _genesys.session.dateInZone(tzone)
• _genesys.session.day.Wednesday
• _genesys.session.day.Tuesday
• _genesys.session.day.Thursday
• _genesys.session.day.Sunday
• _genesys.session.day.Saturday
• _genesys.session.day.Monday
• _genesys.session.day.Friday
The Branching block has the following properties:
Exceptions Property
The Branching block has no page exceptions.
Name Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
248
Voice Blocks Basic
Block Notes Property
Find this property's details under Common Properties for Callflow Blocks.
Exceptions Property
Find this property's details under Common Properties for Callflow Blocks. You can also define custom events.
Conditions Property
This property allows you to define scripts for branching conditions and post-processing.
1. Click under Value to open the Branch Node setting dialog box.
Composer Help
249
Voice Blocks Basic
2. Click Add.
3. Change the default Name to a more descriptive name.
4. Under Expression, click under Value to open Expression Builder where you can define a script for a branching
expression.
5. Composer 8.1.410.14 adds a new Post Action column. Click opposite Post Action to open Expression Builder where
you can define a script for post-processing. The post-processing script get executed if the configured option/condition
was selected.
6. Click OK when done.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
250
Voice Blocks Basic
Disconnect Block
Use the Disconnect block to explicitly hang-up a phone call. It differs from the Exit block as follows:
• When an Exit block is used, if the application was called from a CCXML or CTI application, control is sent back to the
calling application.
• In the case of the Disconnect block, the entire call is terminated.
Notes
• The Disconnect block returns values (a list of variables) back to the calling context, such as a CCXML application.
• The Disconnect block has no page exceptions.
• There is also a Disconnect Block for use in routing workflows as described below.
• Use the routing Disconnect block and not this Disconnect block when invoking a callflow as part of a Play Application
treatment. GVP 8.x Integration Guide states the following: For a URS-centric application, the incoming call arrives at a
Routing Point DN configured in the SIP Server switch. A routing strategy loading on the Routing Point executes a Play
Application treatment to collect customer input. SIP Server sends an INVITE specifying the URI for the voice
application. Media Control Platform executes the application. Customer data is collected, then returned to SIP Server
in the BYE message. The routing strategy receives the attached data and determines the next action for the call. The
call will return to URS where the call can be disconnected in the strategy.
The Disconnect block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments. Use this Property to specify a reason for the
disconnect. The content can be either an ECMAScript expression created in Expression Builder or free-form text.
The string should conform to the standard specified in RFC 3326 (http://www.ietf.org/rfc/rfc3326.txt), Reason
Header Field for the Session Initiation Protocol (SIP). To use Expression Builder to create the reason:
1. Click under Value to display the
button.
2. Click the
button to open Expression Builder. For examples of how to use Expression Builder, see the Expression
Builder topic.
Composer Help
251
Voice Blocks Basic
Return Values Property
Use this property to specify the variable(s) whose value(s) will be returned once the Disconnect block is executed.
To select return variables:
1. Click the Return Values row in the block's property table.
2. Click the
button to open the Return Values dialog box.
3. Select individual variables, or click Select all or Deselect all as needed.
4. Click OK to close the Return Values dialog box.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
252
Voice Blocks Basic
End FCR Block
Use the End FCR block to indicate the end of a recording segment. There must be a matching End FCR block for
each Start FCR block used.
Note: Starting and stopping at tapped points (as marked by the Start FCR block and either EndFCR block or the
end of call) depends on the Prompt Queuing feature. For this reason, all Prompts between Start FCR and End FCR
should have their Immediate Playback property set to true.
The End FCR block has the following properties:
The End FCR block has no page exceptions.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
253
Voice Blocks Basic
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
254
Voice Blocks Basic
Entry Block and Variables
Use an Entry block to begin an application. Only one Entry block can be present in each application. The Entry
block:
• Sets global error (exception) handlers.
• Defines all global application-level properties, global variables (which appear in the list of available variables for other
blocks in the diagram), and global commands. See topic Variables in Callflows.
• Sets default application scripts and parameters.
• Accesses Expression Builder.
The Entry block is used as the entry point for a main callflow or a sub-callflow. It contains the list of all the variables
associated with the callflow (referred to as global variables). Note: Outlinks starting from the Entry block cannot be
renamed or assigned a name through the Properties view. The Entry block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties. The Entry block has all global exception events, with the
defaults of all, connection.disconnect.hangup, and error. Also see Exception Events.
Note on No Input and No Match Events
When selecting exceptions for the Entry block, use both com.genesyslab.composer.toomanynoinputs /
com.genesyslab.composer.toomanynomatches and noinput/nomatch to catch all the possible no input
and no match events. The selection of com.genesyslab.composer.toomanynoinputs /
com.genesyslab.composer.toomanynomatches is required when noinput / nomatch exceeds the maximum retries in
the lower block. The selection of noinput / nomatch is required when the lower block does not retry at all.
• com.genesyslab.composer.toomanynoinputs occurs when the number of no inputs exceeds the maximum
retries in the Menu, Input, DBInput, and Record blocks, and the blocks do not have local noinput exception ports.
Composer Help
255
Voice Blocks Basic
• com.genesyslab.composer.toomanynomatches occurs when the number of no matches exceeds the maximum
retries in the Menu, Input, DBInput, and Record blocks, and the blocks do not have a local nomatch exception port.
Note on error.badfetch.badxmlpage
NGI no longer supports this event. If upgrading an application from an earlier version of Composer that supported
this event in its Entry object, you will need to modify that object via the Exceptions property dialog box.
Application Root Property
• Starting with 8.1.410.14, Composer Projects have a default root VXML file (ComposerRoot.vxml) bundled inside the
src folder. This file, which you can edit to create Project-level defaults such as Input and Menu block variables and
values, is present in newly created Projects and upgraded Projects. New Callflow diagrams have this default root
VXML document automatically configured in the Application Root property of the Entry block.
You have the option to specify a VXML file to be used as an application root document allowing multiple callflows to
share variables. Background: Starting with 8.1.1, each Composer Project can have (at most) one root document
(VXML file). If a Project has no root document, each callflow is its own stand-alone application. If a Project contains
a root document, the set of callflows with Entry blocks that reference that root document make up the application.
• If a callflow or sub-callflow references an application root document, the variables specified in the application root
become available for selection in all dialogs in that diagram.
• Variables defined in the application root directly under the <vxml> tag become available as global variables to callflows
and sub-callflows that access them.
To select an application root document:
1. Click the Application Root row in the block property table.
2. Click the
button to open the Select Resource dialog box.
3. Select the VXML file in the Project src folder and click OK.
Global Commands Property
The Global Commands property sets rootmap elements for the entire application. A rootmap element is a phrase
(user-defined phrase or external grammar) and/or tone the application reacts to at any time the application is
running. Use the Global Commands property to set rootmap elements for the entire application. The application
uses these rootmap elements as global grammars (subsets of a spoken language that callers are expected to use)
in each Input block. Composer creates one outport for each rootmap element; the outport specifies the application
path in the event to which the rootmap element is matched. Use the Entry block Global Commands property to set
rootmap elements for a subcallflow as well. Note: The RootMap elements defined in the Entry block do not apply to
blocks inside a subcallflow. To add, delete, or arrange global phrases, DTMF keys, and grammars:
1. Click the Global Commands row in the block's property table.
2. Click the
Composer Help
button to open the Set Rootmap Commands dialog box.
256
Voice Blocks Basic
Fields in Set Rootmap Commands Dialog Box
• Name-- Displays the name of the command.
• DTMF Option--Displays the DTMF key to recognize.
• Phrase-- Displays the phrase to recognize.
• Grammar--Displays the built-in or custom grammar used.
Genesys recommends that you use only the GRXML grammar. Otherwise, GSL support--which is not a part of the
VoiceXML 2.1 specification--deprecates over time. Note: Built-in grammar support for languages other than U.S.
English is dependent on the ASR vendor. Before using this feature, make sure that your ASR Engine supports builtin grammars for your language.
Add Button
Use the Add button to enter global phrases, DTMF keys, and grammars.
1. Click Add to enable Command Details fields.
2. In the Name* box, accept the default name or change it.
3. From the DTMF Option drop-down list, select the global DTMF key.
4. In the Phrase box, type the phrase.
5. In the Grammar drop-down list, select a grammar. The grammar source is the custom or built-in grammar for
recognition.
Up/Down Buttons
Use the Up and Down buttons to reorder your rootmap elements. Select the element you want to reposition, and
then click Up or Down, as necessary.
Delete Button
To delete a phrase, DTMF key, or grammar entry:
1. Select an entry from the list.
2. Click Delete.
Global Properties Property
This property allows suppression of data within the Nuance 9 platform ASR logs. For more information on this
property, see the Properties topic on the Genesys Voice Platform wiki. Use Global Properties to select global
settings for VXML properties, Automatic Speech Recognition vendor-specific properties or Text-to-Speech vendorspecific properties. To enter properties and values:
1. Click the Global Properties row in the block's property table.
Composer Help
257
Voice Blocks Basic
2. Click the
button to open the Global Property Settings dialog box.
3. Click Add to enable the Property Name and Property Value fields.
4. Enter or select a Property Name by doing one of the following:
• Select the Property Name from the drop-down list, or
• Type the Property Name in the Property Name field.
5. Enter or select a Property Value by doing one of the following:
• Select the Property Value from the drop-down list, or
• Type the Property Value in the Property Value field.
6. Click OK.
Scripts Property
Use the Scripts property for including custom JavaScript includes into the application. The JavaScript functions in
the specified .js file can then be used in the Assign or Branching blocks in the expression.
1. For this property, enter the filename of your file (for example: script.js). If there are multiple files to be loaded, you can
delimit by using the | character; for example: script1.js|script2.js.
2. Then place the custom ECMAScript file in the Scripts subfolder of your project.
There is also a Global Variable SCRIPTSDIR, which specifies the default folder for the scripts files (and works very
similar to VOXFILESDIR for audio files).
Variables Property
Variables can be predefined system variables (provided by Composer, which you cannot delete) or user-defined
variables. See the Variables in Callflows topic for more information. Many Composer blocks have properties that
require you to select a variable. Examples:
• The following callflow blocks contain a mandatory Output Result property: Menu, Record, DB Input, Grammar Menu,
Input, Get Access Number, Transfer, and Statistics. After defining variables in the Entry block, you supply this
property by selecting the variable to contain the output result.
• When creating a new voice project, a Project-level flag, Enable_ICM, controls whether ICM variables are available for
selection and assignment to variables within Composer's Entry block.
• For information on user data and GVPSessionID, see the Project Properties dialog box, Composer Callflow
Option.
To declare for the application or subcallflow:
1. In the Properties tab, click opposite Variables under Value to display the
Composer Help
button.
258
Voice Blocks Basic
2. Select Project, System, or User Variables.
3. Click the arrow to display the selected type. An example System Variables dialog box is shown below.
The above figure shows the dialog box after clicking the Add button. The Value field for the new variable (Var0)
contains a button to access Expression Builder.
GVPSessionID System Variable
Composer Projects have a callflow options property page to control how the GVPSessionID system variable is
initialized. It can be used to control if it is initialized from the X-Genesys-GVP-Session-ID SIP header or the
session.com.genesyslab.userdata object.
Composer Help
259
Voice Blocks Basic
Restoring System Variable Default Values
Projects created in earlier versions of Composer may throw runtime errors due to incorrectly initialized system
variables after upgrading to Composer 8.1.3. This was due to changes in how system variables were stored and
handled in 8.1.3. To resolve this, the Entry block Variables dialog adds a button to restore system variables to
default values, which can be used to reset variables and fix initialization. Note that this also removes any custom
values set in system variables. As system variables cannot be updated, after clicking the Restore System
Variables Default Values button, you cannot update the customized system variables.
Starting with 8.1.410.14, you can:
• Invoke the Entry Block variables dialog when a property is selected in the Properties view using ALT+V.
• Enable Composer to automatically declare variables in a Main callflow to match input/output variable names in Subcallflows and perform the mapping. For more information, see the auto synchronization option in Diagram
Preferences.
Defining Variables
Important! When defining a variable name, the name:
• Cannot start with APP_ (callflow diagrams).
• Must not start with a number or underscore.
• May consist of letters, numbers, or underscores.
When you define and initialize a variable that is expected to be played as a date later on in the callflow, define the
value using the following format: yyyyymmdd. Example: MyDate=20090618. You must use this format; Composer
does not perform any conversions in this case. When you define and initialize a variable that is expected to be
played as a time later on in the callflow, define a 12 hour-based value using the following format: hhmmssa or
hhmmssp. Example: MyTime=115900a or MyTime=063700p. Define a 24 hour-based value using the following
format: hhmmssh Example: MyTime=192000h. You must use this format; Composer does not perform any
conversions in this case. If variables are set as part of provisioning by the Genesys VoiceXML provisioning system,
and if these variables have the same names as variables set in the Variables property dialog box, the VoiceXML
provisioning system values take precedence over the global variables set here. Many blocks enable the use of
variables rather than static data. For example, the Prompt block can play the value of a variable as Text-to-Speech.
Variables whose values are to be used in other blocks must be declared here so that they appear in the list of
available variables in other blocks. The value collected by an Input block or a Menu block is saved as a session
variable whose name is the same as the block Name.
System Variables
These variables apply only to the Entry block, unless otherwise indicated.
• APP_LANGUAGE--Holds the application language setting. The value should be the RFC 3066 language tag of an
installed language pack. Examples of valid RFC 3066 language tags include en-US and fr-FR. This setting also acts
as a default language for the application. This variable may be set using the Set Language block for a multilingual
application.
• APP ASR LANGUAGE--Holds the language locale for ASR resources. You must define this variable if the application
needs to use a different language locale for ASR from TTS resources.
Composer Help
260
Voice Blocks Basic
• GRAMMARFILEDIR--Gives the relative path from the application to the directory that contains the grammar files. By
default, it is set to ../Resources/Grammars. If a voice application supports multiple languages, you can enable the
application to switch between them, by changing the value of this variable. In the Subcallflow_Start block, the
GRAMMARFILEDIR global variables are not defined by default. This allows the subcallflows to inherit the value of this
variable from the main callflow. If the subcallflow overrides this value, the variable can be defined in the
Subcallflow_Start block.
• VOXFILEDIR--Gives the relative path in the application to the directory that contains the audio files (.vox/.wav). By
default, it is set to ../Resources/Prompts. If a voice application supports multiple languages, you can enable the
application to switch between them, by changing the value of this variable.
• SCRIPTSDIR--Default location for JavaScript files
• EnableReports--Enables VAR reporting. (Reporting blocks)
• EnableSNMP--Enables the SNMP block, if present in the application
• CallUUID--Session connection Universal ID
• GVPSessionID--The Genesys Userdata Session ID
• LAST_EVENT_NAME--Stores the name of the last event or error that was handled in the Entry block.
• LAST_EVENT_MSG--Stores the message of the last event or error that was handled in the Entry block
• LAST_EVENT_URL--Stores the URL of the last event or error that was handled in the Entry block.
• LAST_EVENT_ELEMENT--Stores the element name of the last event or error that was handled in the Entry block
• LAST_EVENT_LINE--Stores the line number of the last event or error that was handled in the Entry block
• EnableFCR--A flag for enabling Full Call Recording
• COMPOSER WSSTUBBING
• App_OPM--Used for fetching OPM parameters. Stores JSON content passed by GVP in session variables. Available
throughout the callflow diagram. The OPM block works with this variable by extracting values from it into application
variables. Available for main callflows only.
• OCS_RecordURI--Used by Outbound blocks. Its default value will be set from userdata passed into the application.
For workflows (SCXML): _genesys.ixn.interactions[InteractionID].udata.GSW_RECORD_URI.For callflows: (VXML)
session.com.genesyslab.userdata.GSW_RECORD_URI.
• OCS_URI--Used by Outbound blocks. Holds the OCS resource path ([http|https]://<host>:<port>). Its default value will
be deduced from OCS_Record_URI. You may change this variable value in order to use a different OCS application
for all Outbound blocks in the workflow.
• OCS_Record--Used by Outbound blocks. Holds the Record Handle value deduced from OCS_Record_URI.
Note: Request URi parameters created in IVR Profiles during the VoiceXML application provisioning are passed to
the Composer generated VoiceXML application as request-uri parameters in the
session.connection.protocol.sip.requesturi session array. An Entry block variable can use these
parameters by setting the following expressions to the variable values: typeof
session.connection.protocol.sip.requesturi['var1'] == 'undefined' ?
"LocalDefaultValue" : session.connection.protocol.sip.requesturi['var1']. If parameters
are set as part of IVR Profiles provisioning in the Genesys VoiceXML provisioning system, and if these parameters
have the same names as variables set in the Entry block's Variables property with the above mentioned
sip.requesturi expression, then the SIP-Request-URI parameters will take precedence over the user
variable values set in the Entry block.
Composer Help
261
Voice Blocks Basic
Many blocks enable the use of variables rather than static data. For example, the Prompt block can play the value
of a variable as Text-to-Speech. Variables whose values are to be used in other blocks must be declared here so
that they appear in the list of available variables in other blocks. The value collected by an Input block or a Menu
block is saved as a session variable whose name is the same as the block name.
Variable Name
You can use the Variable name field for either of the following purposes:
• To enter the name of a new variable.
• To change the name of an existing variable. To do this, select an existing variable from the list of variables. The
variable's name appears in the Variable box, and you can the change its value in the Value box.
Excluded Characters
The Variable name field will not accept the following special characters:
• less-than sign (<)
• greater-than sign (>)
• double quotation mark ()
• apostrophe (‘)
• asterisk (*)
• ampersand (&)
• pound (#)
• percentage (%)
• semi colon (;)
• question mark (?)
• period (.)
The variable Value field will not accept the following special characters:
• less-than sign (<)
• greater-than sign (>)
• double quotation mark ()
• apostrophe (‘)
• ampersand (&)
• plus sign (+)
• minus sign (-)
• asterisk (*)
• percentage (%)
Composer Help
262
Voice Blocks Basic
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
263
Voice Blocks Basic
Exit Block
Use the Exit block to end the application. There will usually be an Exit block in every main callflow, unless you use a
GoTo block, blind transfer, or other mechanism to end a callflow. Return Mode should be set to false in the main
callflow's Exit block. The Exit block is typically connected to the connection.disconnect.hangup exception handler. It
is also connected to the last block in the application (for example, when the application wants to play an error
message and terminate the call). You can have multiple Exit blocks inside a callflow. The Exit block has no page
exceptions.
Using an Exit Block Inside a Subcallflow
The Subdialog block is used to create subcallflows, which are VoiceXML subdialogs. An Exit block terminates the
subcallflow application. If the control has to be returned to the main application, then the Return Mode property
should be set to true and the user can send a list of parameters to the main call flow as the output parameters.
Name
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Reason Property
This property is visible only for subcallflows. Enter a reason for the implicit ActionEnd to be used for VAR reporting.
Return Mode Property
This property is visible only for subcallflows. Click the down arrow under Value and select one of the following:
• true to return control back to the calling callflow.
• false to exit the application.
Composer Help
264
Voice Blocks Basic
Return Values Property
Use this property to specify the variable(s) whose value(s) will be returned once the Exit block is executed. To
select return variables:
1. Click the Return Values row in the block's property table.
2. Click the
button to open the Return Values dialog box.
3. Select individual variables (including ICM variables if applicable), or click Select all or Deselect all as needed.
4. Click OK to close the Return Values dialog box.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Result Property
This property is visible only for subcallflows. Click the down arrow and select one of the following to be used for
VAR reporting:
• UNKNOWN
• SUCCESS
• FAILED
Composer Help
265
Voice Blocks Basic
GoTo Block
Use this block to direct the application to a specific URL. This block enables you to pass parameters in the current
application to the URL by selecting them from the User Parameters list. This block is normally used to transfer to
another voice application. Genesys recommends that you use subcallflows for modularizing the application and the
GoTo block for calling an external application. Note: If an application enables Voice Application Reporting, Genesys
recommends that you use subcallflows instead of a GoTo block. The GoTo block has no page exceptions. The
GoTo block has the following properties:
Name Property
Please find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
266
Voice Blocks Basic
Parameters
Use to select variables/parameters to pass to the target application. Note: If the Type property is set to ProjectFile,
the Parameters property does not apply. To select parameters (Type property is set to URL):
1. Click the Parameters row in the block's property table.
2. Click the
button to open the Parameters dialog box.
3. Select individual parameters, or click Select all or Deselect all as needed.
4. Click OK to close the Parameters dialog box.
Type
Sets the type of the destination application. There are two options:
• URL--The destination application can be found at the location specified in the Uri property.
• ProjectFile--The destination can be another location inside the same Composer Project.
To select a value for the Type property:
1. Select the Type row in the block's property table.
2. In the Value field, select URL or ProjectFile from the drop-down list.
URI
Specifies the destination (URL or Composer Project) depending on the value of the Type property. To set a URL
destination for the Uri property (Type property is set to URL):
1. Select the Uri row in the block's property table.
2. In the Value field:
• Type a valid URL, which can be specified as a relative path if the file is in the same project (for example, .../src/
WSJNews.vxml).
• Or select a variable from the drop-down list.
To set a Composer Project destination for the Uri property (Type property is set to ProjectFile):
1. Click the Uri row in the block's property table.
2. Click the
button to open the Uri dialog box.
3. Select a Voice Project file in the list.
4. Click OK to close the Uri dialog box.
Composer Help
267
Voice Blocks Basic
Fetch Audio Property
Enter the fetchaudio file to play when executing a long-running tasks, such as a server side web query. By default,
Next Generation Interpreter NGI) supplies a built-in fetchaudio file. For information on GVP support of fetchaudio,
see:
• Fetching Properties in GVP Voice XML Help.
• The VoiceXML Properties section of the GVP 8.1 Legacy Genesys VoiceXML 2.1 Reference Manual.
• The Prompt block, VXML Behavior and Queueing of Prompts.
Fetch Audio Delay Property
Enter the length of time to wait at the start of a fetch delay before playing fetchaudio. For more information, see
Fetching Properties in GVP Voice XML Help
Fetch Audio Minimum Property
Enter the minimum length of time to play fetchaudio, once started, even if the fetch result arrives in the meantime.
For more information, see Fetching Properties in GVP Voice XML Help
Fetch Hint Property
Select prefetch or safe to define when XML data files can be fetched. Selecting safe indicates to only load the XML
data file when needed. For more information, see Fetching Properties in GVP Voice XML Help.
Fetch Timeout Property
Enter the timeout for fetches. This is not supported when using Nuance (MRCP). An error.badfetch is thrown when
a fetch duration exceeds fetchtimeout. For more information, see Fetching Properties in GVP Voice XML Help.
Max Age Property
Enter the maximum acceptable age, in seconds, of cached audio resources. For more information, see Fetching
Properties in GVP Voice XML Help.
Composer Help
268
Voice Blocks Basic
Max Stale Property
Enter the maximum staleness, in seconds, of expired cached audio resources.For more information, see Fetching
Properties in GVP Voice XML Help.
Composer Help
269
Voice Blocks Basic
Grammar Menu Block
Creating a Simple Grammar Video
Below is a video tutorial on building a simple grammar with the Grammar Menu block.
Important
While the interface for Composer in this video is from release 8.0.1, the steps are the basically the
same for subsequent releases.
Link to video
The Grammar Menu block uses Grammar Builder files to determine the input options.
Menu Block Exception Events
The Menu block has eight local exception events.
• error
• error.noresource
• maxspeechtimeout
• noinput
• nomatch
• error.badfetch.grammar.uri
• error.badfetch.grammar.syntax
• error.badfetch.grammar.load
The Grammar Menu block has the following properties:
Name Property
Find this property's details under Common Properties.
Composer Help
270
Voice Blocks Basic
Block Notes
Can be used for both callflow and workflow blocks to add comments.
Exceptions
Find this property's details under Common Properties.
Gbuilder File Property
A Gbuilder file is created using Grammar Builder and may contain grammar-related information for multiple locales
in a proprietary format. The Grammar Menu block can work with the Gbuilder file directly. The Gbuilder File property
is used to select a Gbuilder file in the project. This step also selects the particular rule Rule ID to use for the
Grammar Menu block. Once specified, the Grammar Menu block creates menu options based on the information
contained in the specified Rule ID in the selected Gbuilder file. To select a grammar builder file and rule:
1. Select the Gbuilder File row in the block's property view.
2. Click the
button to open the GBuilder File dialog box.
Grammar builder files that are defined for this Composer Project are shown in the GBuilder Files pane on the left.
These files are usually located in the project folder path: [VoiceProject] > Resources > Grammars > [
locale] > [gbuilderfile].gbuilder . Note: Gbuilder files also contain DTMF information.
1. Select a grammar builder file in the left pane.
2. Rules defined for the selected grammar builder file are displayed in the Rules in selected file pane to the right. Select
the rule you want to use in this Grammar Menu block, then click OK.
Your selection automatically populates the information for the following three properties: Rule IdRule TagsMenu
Options Note: The Grammar Menu block does not pick up changes automatically if you change your Gbuilder file.
To synchronize the block with the latest changes, click on the Gbuilder File property. In the popup make sure that
the correct Gbuilder file and RuleID are selected. Click OK to close the dialog box. Your diagram will now reflect any
menu options changes made in the Gbuilder file.
Rule ID Property
The Rule ID property is automatically populated with the rule you selected from the Rules in selected file pane in the
GBuilder File dialog box. (Refer to the Gbuilder File property.) This is a read-only property in the properties view.
Composer Help
271
Voice Blocks Basic
Rule Tags
The Rule Tags property is automatically populated with the specific rule tags that have been defined for the rule you
selected from the Rules in selected file pane in the GBuilder File dialog box. (Refer to the Gbuilder File Property
and Rule Id property.) This is a read-only property in the properties view.
Language
The language set by this property overrides any language set by the Set Language block, the Project preferences,
or the incoming call parameters. The property takes effect only for the duration of this block, and the language
setting reverts back to its previous state after the block is done. In the case of the Grammar Menu block, this
property affects the language of grammars of TTS output:
1. Click under Value to display a down arrow.
2. Click the down arrow and select English - United States (en-US) or the variable that contains the language.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Menu Mode
To assign a value to the Menu Mode property:
Composer Help
272
Voice Blocks Basic
1. Select the Menu Mode row in the block's property table.
2. In the Value field, select DTMF, Voice, or Hybrid from the drop-down list.
The DTMF format indicates the menu option mode of input will be via the telephone keypad. Note: Grammar Builder
treats DTMF as another locale. The Voice format indicates the menu option mode of input will be a voice phrase.
The Hybrid menu mode will handle both DTMF and Voice inputs, that is via telephone keypad and voice phrase.
Note: If you select the Hybrid menu mode, you will have to provide both voice and DTMF values for all menu
options.
Menu Options
The Menu Options property is automatically populated with generated menu items (options) that apply to the
selected rule tags in the grammar builder file. You do not modify this property. (Refer to the Gbuilder File property,
Rule ID property, and Rule Tags property.) This is a read-only property in the properties view.
Clear Buffer
Use the Clear Buffer property for clearing the DTMF digits in the key-ahead buffer. If it is not set to true, the DTMF
digits entered are carried forward to the next block. It is commonly used for applications with multiple menus,
enabling the caller to key ahead the DTMF digits corresponding to the menu choices. To assign a value to the Clear
Buffer property:
1. Select the Clear Buffer row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Interruptible
The Interruptible property does not apply to the Record block. This property specifies whether the caller can
interrupt the prompt before it has finished playing. To assign a value to the Interruptible property:
1. Select the Interruptible row in the block's property table.
2. In the Value field, select true,false,or DTMF (for DTMF barge-in mode support) from the drop-down list.
Prompts
Find this property's details under Common Properties. Note: When Type is set to Value and Interpret-As is set to
Audio, you can specify an HTTP or RTSP URL. When Type is set to Variable and Interpret-As is set to Audio, you
can specify a variable that contains an HTTP or RTSP URL. Starting with 8.1.410.14, validation displays a warning
message if a resource file does not exist.
Composer Help
273
Voice Blocks Basic
Timeout
The Timeout property defines the length of the pause between when the voice application plays the last data in the
list, and when it moves to the next block. To provide a timeout value:
1. Select the Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Security
When the Security property is set to true, data for this block is treated as private. GVP will consider the data entered
by the caller for this block as sensitive and will suppress it in platform logs and metrics. To assign a value to the
Security property:
1. Select the Security row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Output Result
You must use the Output Result property to assign the collected data to a user-defined variable for further
processing. Note! This property is mandatory. You must select a variable for the output result even if you do not
plan on using the variable. If this is not done, a validation error will be generated in the Problems view.
1. Select the Output Result row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
For more information, see Upgrading Projects/Diagrams.
Get Shadow Variables
Shadow variables provide a way to retrieve further information regarding the value of an input item. By setting this
property to true, it will expose the block’s shadow variable within the callflow. When enabled, the shadow variable
will be included in the list of available variables. (For example, the Log block’s Logging Details will show
GrammarMenu1$.) A shadow variable is referenced as blockname$.shadowVariable, where blockname is the value
of the input item's name attribute, and shadowVariable is the name of a specific shadow variable, for example:
GrammarMenu1$.duration. To assign a value to the Get Shadow Variables property:
1. Select the Get Shadow Variables row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
274
Voice Blocks Basic
Number of Retries Allowed
This property determines how many opportunities the user will be provided to re-enter the value. If Use Last Prompt
Indefinitely is set to true, this property has no effect; otherwise, the
error.com.genesyslab.composer.toomanynomatches or error.com.genesyslab.composer.toomanynoinputs errors
will be raised on reaching the maximum retry limit. To provide a value for the number of retries allowed:
1. Select the Number Of Retries Allowed row in the block's property table.
2. In the Value field, type a value for the number of retries that will be allowed.
Retry Prompts
Find this property's details under Common Properties. A selection can only be made if the Number Of Retries
Allowed Property is greater than 0. Starting with 8.1.410.14, validation displays a warning message if a resource file
does not exist.
Use Last Reprompt Indefinitely
If you set the Use Last Reprompt Indefinitely property to true, the application uses your last re-prompt as the prompt
for all further retries. Therefore, the exception handlers that come out for nomatch and noinput are redundant--even
if you set the default exceptions that come out as red dots on the left-side of the block. To assign a value to the Use
Last Reprompt Indefinitely property:
1. Select the Use Last Reprompt Indefinitely row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Use Original Prompts
If you set the Use Original Prompts property to true, in the event of an error requiring a retry, the application first
plays back the retry error prompt, and then plays back the original prompt for the block (as specified in the Prompts
property). To assign a value to the Use Original Prompts property:
1. Select the Use Original Prompts row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Use Single Counter For Nomatch And Noinput
If you set the Use Single Counter For Nomatch And Noinput property to true, the application maintains a single
combined counter for the nomatch and noinput errors. For example, if the block has three nomatch retry messages
and three noinput retry messages, the user gets three retry attempts. If you do not select this option, the application
Composer Help
275
Voice Blocks Basic
generates a total of six retries; and the user gets up to six retry attempts while not exceeding three of each type -noinput or nomatch. Note: This property not available on the Record block. To assign a value to the Use Single
Counter For Nomatch And Noinput property:
1. Select the Use Single Counter For Nomatch And Noinput row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
276
Voice Blocks Basic
Input Block
The Input block accepts DTMF or speech input from callers. It differs from the Menu block in that it enables taking
input that might not belong to a simple choice list (as for the Menu block). It can be used to collect numerical data;
for example, phone numbers, account numbers, amounts, or speech data, such as a Stock name. It uses speech or
DTMF grammars to define the allowable input values for the user responses. Built-in system grammars are
available for data, such as dates and amount.
Important
Built-in grammars may not be available for all languages. If you specify a language other than U.S.
English and refer to an unsupported built-in grammar, a parse error error.unsupported.builtin will
be thrown.
In case of user input blocks (Menu, Input, Record, Transfer), Composer adds a global variable of type "Block" to
the variables list. You can conveniently use this variable for accessing the user input value. Also see Menu Block,
Number of Allowed Attempts Exceeded. The Input block has the following properties:
Input Block Exception Events
The Input block has eight exception events:
• error
• error.noresource
• maxspeechtimeout
• noinput
• nomatch
• error.badfetch.grammar.uri
• error.badfetch.grammar.syntax
• error.badfetch.grammar.load
Name Property
Please find this property's details under Common Properties.
Composer Help
277
Voice Blocks Basic
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties.
Language Property
The language set by this property overrides any language set by the Set Language block, the Project preferences,
or the incoming call parameters. The property takes effect only for the duration of this block, and the language
setting reverts back to its previous state after the block is done. In the case of the Input block, this property affects
the language of grammars of TTS output:
1. Click under Value to display a down arrow.
2. Click the down arrow and select English - United States (en-US) or the variable that contains the language.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
278
Voice Blocks Basic
Output Result Property
You must use the Output Result property to assign the collected data to a user-defined variable for further
processing.
Important
This property is mandatory. You must select a variable for the output result even if you do not plan
on using the variable. If this is not done, a validation error will be generated in the Problems view.
1. Select the Output Result row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
For more information, see Upgrading Projects/Diagrams.
Clear Buffer Property
Use the Clear Buffer property for clearing the DTMF digits in the key-ahead buffer. If it is not set to true, the DTMF
digits entered are carried forward to the next block. It is commonly used for applications with multiple menus,
enabling the caller to key ahead the DTMF digits corresponding to the menu choices. To assign a value to the Clear
Buffer property:
1. Select the Clear Buffer row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Interruptible Property
This property specifies whether the caller can interrupt the prompt before it has finished playing. To assign a value
to the Interruptible property:
1. Select the Interruptible row in the block's property table.
2. In the Value field, select true,false,or DTMF (for DTMF barge-in mode support) from the drop-down list.
Prompts Property
Find this property's details under Common Properties.
Composer Help
279
Voice Blocks Basic
Important
When Type is set to Value and Interpret-As is set to Audio, you can specify an HTTP or RTSP
URL. When Type is set to Variable and Interpret-As is set to Audio, you can specify a variable
that contains an HTTP or RTSP URL. Starting with 8.1.410.14, validation displays a warning
message if a resource file or URL does not exist.
Security Property
When the Security property is set to true, data for this block is treated as private. GVP will consider the data
associated with this block as sensitive and will suppress it in platform logs and metrics. Composer uses the
com.genesyslab.private property for the Security property of callflow blocks. For more information see the
GVP 8.1 Voice XML Help.
To assign a value to the Security property:
1. Select the Security row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Timeout Property
The Timeout property defines the length of the pause between when the voice application plays the last data in the
list, and when it moves to the next block. To provide a timeout value:
1. Select the Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Grammar Type Property
To assign a value to the Grammar Type property:
1. Select the Grammar Type row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
• builtinBoolean
• builtinCurrency
• builtinDate
• builtinDigits
• builtinNumber
Composer Help
280
Voice Blocks Basic
• builtinPhone
• builtinTime
• externalGrammar
Important
All the builtinXXX selections are grammars that are provide by the platform or the ASR Engine.
Built-in grammar support for locales other than U.S. English is dependent on the ASR vendor.
Before using this feature, make sure that your ASR Engine supports built-in grammars for your
locale. This feature has the following critical prerequisites: The ASR Engine must support built-in
grammars for that language. Contact your ASR Vendor for details. If the ASR Engine supports the
language you want to use, then you must install the Language Pack for that language on the GVP
Server.
builtinBoolean
Valid inputs include affirmative and negative phrases appropriate to the current locale. DTMF 1 represents " yes,"
and 2 represents "no." The result is ECMAScript true for yes or false for no. The value is submitted as the string
true or the string false.
builtinCurrency
Valid spoken inputs include phrases that specify a currency amount. For DTMF input, the asterisk (*) character acts
as the decimal point. The result is either a string with the format UUUmm.nn, where UUU is the three-character
currency indicator according to ISO standard 4217:1995, or null if not spoken by the caller.
builtinDate
Valid spoken inputs include phrases that specify a date, including a month, day, and year. DTMF inputs are: four
digits for the year, followed by two digits for the month, and then two digits for the day. The result is a fixed-length
date string with format yyyymmdd--for example, 20000704. If the year is not specified, yyyy is returned as ????; if
the month is not specified mm is returned as ??; and if the day is not specified dd is returned as ??.
builtinDigits
Valid spoken or DTMF inputs include one or more digits, 0--9. The result is a string of digits.
builtinNumber
Valid spoken inputs include phrases that specify numbers--for example, one hundred twenty-three, or five point
three. Valid DTMF input includes positive numbers entered using digits and the star (*) character (to represent a
decimal point). The result is a string of digits from 0-9 and that can optionally include a decimal point (.), and/or a
plus sign (+) or minus sign (-).
Composer Help
281
Voice Blocks Basic
builtinPhone
Valid spoken inputs include phrases that specify a phone number. DTMF star (*) represents x. The result is a string
that contains a telephone number consisting of a string of digits and optionally, the character x to indicate a phone
number with an extension--for example, 8005551234x789."
builtinTime
Valid spoken inputs include phrases that specify a time, including hours and minutes. The result is a five-character
string in the format hhmmx, where x is either a for AM, p for PM, h to indicate a time specified according to the
24-hour clock, or ? to indicate an ambiguous time. Because there is no DTMF convention for specifying AM/PM, in
the case of DTMF input, the result is always end with h or ?. If the field value is subsequently used in a prompt, the
value is spoken as a time appropriate to the current locale.
externalGrammar
The application can also define an external grammar. The grammars can be written using the GRXML Editor, or
GRXML files can be imported into the Composer Project. Look at the User Input Project voice application template
in Composer for an example of the use of an external grammar file. Note for Voice Application Developers When
developing a VoiceXML application, you must set the web server connection timeout so that it is appropriate to the
task that the application performs. It should be greater than one or all of the following callflow applications:
• Maximum talk time
• Maximum recording time
• Maximum wait time for a user input
Input Grammar Dtmf Property
Important
Multiple grammars by using “|” is supported only when literal values are used and not for
expressions and variables.
Use the Input Grammar Dtmf (Dual Tone Multi-Frequency as described below) property to specify the DTMF
Grammar for the Input Block. The DTMF Grammar is processed and handled by GVP. In the case of external
grammars, this specifies the actual path of the grammar file / resource for DTMF Grammars. This is only valid
when the Grammar Type is externalGrammar and Input Mode is dtmf or hybrid. To assign a value to the Input
Grammar Dtmf property:
1. Select the Input Grammar Dtmf row in the block's property table.
2. In the Value field, select a value from the drop-down list. >br>
Values are the Voice Application Variables described under the Variables You can specify multiple grammars by
separating the grammars with the "|" character.
Composer Help
282
Voice Blocks Basic
About Dual Tone Multi Frequency (DTMF) Signaling
DTMF signaling is used for telecommunication signaling over analog telephone lines in the voice-frequency band
between telephone handsets and other communications devices and the switching center. The version of DTMF
used for telephone tone dialing is known by the trademarked term, Touch-Tone. There are some situations where
the interpreter (NGI) cannot accept DTMF keypresses immediately as input. In these situations, the keypresses are
stored in the DTMF input buffer, for possible later use as input. Throughout the execution of the application, the
interpreter must decide whether to save the current contents of the DTMF input buffer (and use them at the next
input state), or to discard them. Buffering DTMF input can be useful in allowing typeahead, where users input DTMF
for multiple fields rapidly, separated by the termchar. Whatever input is left after the first termchar, may be used in
subsequent fields, meaning that the user does not have to wait to hear each prompt.
Input Grammar Voice Property
• See Important note under Input Grammar Dtmf Property, which also applies to this property.
Use the Input Grammar Voice property to specify the Voice Grammar for the Input block. If you are writing hybrid
applications that allow both DTMF and Speech input, specify both the DTMF and Voice grammars. The Voice
Grammar is sent to the ASR Engine for processing, whereas the DTMF grammar is processed by GVP. As a result,
you need two separate grammars for Voice and DTMF in the case of hybrid applications that allow both Voice and
DTMF inputs. In the case of external grammars, this specifies the actual path of the grammar file / resource for ASR
Grammars.. This is only valid when Grammar Type is externalGrammar and Input Mode is voice or hybrid. To
assign a value to the Input Grammar Voice property:
1. Select the Input Grammar Voice row in the block's property table.
2. In the Value field, select a value from the drop-down list. You can specify multiple grammars by separating the
grammars with the "|" character.
Values are the Voice Application Variables described under the Variables Property.
Input Mode Property
To assign a value to the Input Mode property:
1. Select the Input Mode row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
• dtmf
• voice
• hybrid
DTMF
The DTMF format indicates the menu option mode of input will be via the telephone keypad.
Composer Help
283
Voice Blocks Basic
Voice
The Voice format indicates the menu option mode of input will be a voice phrase.
Hybrid
The Hybrid menu mode will handle both DTMF and Voice inputs, that is via telephone keypad and voice phrase.
Slot Property
The Slot property enables you to specify the slot name of the return value from the grammar. If the slot name is not
specified, it is assumed that the grammar will return the value of a slot having the same name as the INPUT block
itself. To provide a slot name:
1. Select the Slot row in the block's property table.
2. In the Value field, type a slot name that conforms to the restrictions above.
Input Termination Character Property
The Input Termination Character property defines any character that callers can input in order to indicate that they
have finished entering data. For example, the prompt given to the caller may say "Enter your account number, and
then press the pound key." The pound key is the input-ending character. To provide a value for the input termination
character:
1. Select the Input Termination Character row in the block's property table.
2. In the Value field, type a value for a character to represent the end of the input string.
A typical value that is often used, as indicated above, is: # Example:
• To use # or * then type the value as # or *
Warning
Only 1 character can be used as the termination character.
Inter Digit Timeout Property
The Inter Digit Timeout property defines the longest wait time between input characters before a timeout is
generated. This is mandatory if dtmf is selected as the Input Mode. Note: Inter Digit Timeout property is applicable
only for DTMF input. To provide an Inter Digit timeout value:
Composer Help
284
Voice Blocks Basic
1. Select the Inter Digit Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Maximum Input Digits Property
Tip
This property only applies if the builtinDigits grammar is selected.
The Maximum Input Digits property defines the maximum number of characters that the caller may input. If the
input is variable, an input character such as pound sign (#) should be used to terminate the input. This is mandatory
if dtmf is selected as the Input Mode. To provide a value for the maximum number of input digits:
1. Select the Maximum Input Digits row in the block's property table.
2. In the Value field, type a value for the maximum number of input digits.
Minimum Input Digits Property
Tip
This property only applies if the builtinDigits grammar is selected.
The Minimum Input Digits property defines the minimum number of characters that the caller must input. This is
mandatory if dtmf is selected as the Input Mode. To provide a value for the minimum number of input digits:
1. Select the Minimum Input Digits row in the block's property table.
2. In the Value field, type a value for the minimum number of input digits.
Get Shadow Variables Property
Shadow variables (optional) provide a way to retrieve further information regarding the value of an input item. By
setting this property to true, it will expose the block’s shadow variable within the callflow. When enabled, the
shadow variable will be included in the list of available variables. (For example, the Log block’s Logging Details will
show Input1$.) A shadow variable is referenced as blockname$.shadowVariable, where blockname is the value of
the input item's name attribute, and shadowVariable is the name of a specific shadow variable, for example:
Input1$.duration. Shadow variables can provide platform-related information about the interaction/input. For
example, for speech recognition, this may be the confidence level the platform receives from the ASR engine about
Composer Help
285
Voice Blocks Basic
how closely the engine could match the user utterance to specified grammar. To assign a value to the Get Shadow
Variables property:
1. Select the Get Shadow Variables row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Number Of Retries Allowed Property
The Number Of Retries Allowed property determines how many opportunities the user will be provided to re-enter
the value. If Use Last Prompt Indefinitely is set to true, this property has no effect; otherwise, the
error.com.genesyslab.composer.toomanynomatches or error.com.genesyslab.composer.toomanynoinputs errors
will be raised on reaching the maximum retry limit. To provide a value for the number of retries allowed:
1. Select the Number Of Retries Allowed row in the block's property table.
2. In the Value field, type a value for the number of retries that will be allowed.
Retry Prompts Property
Find this property's details under Common Properties.
Use Last Reprompt Indefinitely Property
If you set the Use Last Reprompt Indefinitely property to true, the application uses your last reprompt as the prompt
for all further retries. In this case the NoMatch and NoInput exception handlers will never get executed, as the retry
loop keeps executing forever. To assign a value to the Use Last Reprompt Indefinitely property:
1. Select the Use Last Reprompt Indefinitely row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Use Original Prompts Property
If you set the Use Original Prompts property to true, in the event of an error requiring a retry, the application first
plays back the retry error prompt, and then plays back the original prompt for the block (as specified in the Prompts
property). To assign a value to the Use Original Prompts property:
1. Select the Use Original Prompts row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
286
Voice Blocks Basic
Use Single Counter For Nomatch And Noinput Property
If you set the Use Single Counter For Nomatch And Noinput property to true, the application maintains a single
combined counter for the nomatch and noinput errors. For example, if the block has three nomatch retry messages
and three noinput retry messages, the user gets three retry attempts. If you do not select this option, the application
generates a total of six retries; and the user gets up to six retry attempts while not exceeding three of each type -noinput or nomatch.
Tip
This property not available on the Record block.
To assign a value to the Use Single Counter For Nomatch And Noinput property:
1. Select the Use Single Counter For Nomatch And Noinput row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
287
Voice Blocks Basic
Log Common Block
Use a Log block to record information about an application. For example, you can log caller-recorded input
collected while an application is running or error messages. You can use the Log block for any of the following
purposes:
1. Informational – To log the application specific data
2. Error – for logging error details
3. Warning – to flag any warnings
4. Debug – for debugging
The categories in the Log Level property correspond to the above.
When used for a callflow, the Log block writes the log to the Genesys Voice Platform logs (Media Control Platform)
using the VoiceXML <log> tag.
The Log block has the following properties:
The Log block has no page exceptions.
Name Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
blocks.
Block Notes Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Exceptions Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
For callflows, invalid ECMAScript expressions may raise the following exception events: error.semantic. For
workflows, invalid ECMAScript expressions may raise the following exception events:
• error.log.ReferenceError
• error.illegalcond.SyntaxError
Composer Help
288
Voice Blocks Basic
• error.illegalcond.ReferenceError
You can use custom events to define the ECMAScript exception event handling.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Label Property
This property applies to workflows only. It provides meta-data for the logging details.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
289
Voice Blocks Basic
Looping Common Block
Use this block to iterate over a sequence of blocks multiple times in the following scenarios:
1. Iterate over a sequence of blocks based on a self-incrementing counter (FOR).
2. Iterate indefinitely until an exit condition is met (WHILE).
3. Iterate over records/data returned by the DB Data block (CURSOR/FOREACH). Also, populate variables if variables
mapping is defined.
4. Iterate over data returned by Context Services blocks (FOREACH). Also, populate variables if Variables Mapping is
defined.
5. Iterate over JSON Array defined in the application.
For scenarios 1 and 2 above, use the Looping block with a reference to the block retrieving the data. Scenarios 3
and/or 4 can be used in conjunction with 1 or 2, in which case the loop will exit when either of the exit conditions is
met.
Prerequisite
You must perform the following steps in order for the Looping block to be used to iterate over data returned by the
DB Data block:
1. Create a folder named Scripts in the Project folder.
2. In the Entry block, specify a value for the Scripts property such as ../include/DBRecordSetAccess.js
The Looping block has the following properties:
Name Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Block Notes Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
290
Voice Blocks Basic
Counter Initial Value Property
A Counter variable controls the number of loops. Specify the initial value by entering a positive integer (including
zero) or selecting the variable that contains the initial value. Composer will increment the Counter variable after
each iteration. The value of the Counter variable is available after the looping has exited. This is a mandatory
property if the Counter Variable property is specified.
Counter Variable Property
Enter a name for the variable used to store the Counter value or select the variable that contains the name. This is
a mandatory property if the Counter Initial Value property is specified.
Current Record Variable Property
Select a variable to be used to store the current record when iterating over records. Composer will assign the
current record after each iteration. This property is ignored if the Data Source Property is not set
Data Source Property
Specify a block reference to the DB Data or a Context Services block (with Variables Mapping support) that
provides the data to be iterated or select the variable that contains a JSON Array. This is a mandatory property if
Counter Initial Value and Counter Variable are not specified.
Exceptions Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks. You can also define custom events.
Counter Max Value Property
Specify the maximum value by entering a positive integer greater than the initial value or selecting the variable that
contains the maximum value. When the Counter variable reaches the maximum value, then the block connected to
the Exit port is executed. This is a mandatory property if the Counter Variable property is specified or if the Data
Source property is not specified.
Composer Help
291
Voice Blocks Basic
Exit Expression Property
This property is optional. If specified, prior to each iteration the exit expression is evaluated. If true, the flow goes
out via the Exit port of the block. This condition is used in conjunction with max records (if Data Source is specified)
or Counter Max Value (if Counter Variable is specified). To enter an exit expression
1. Opposite the Exit Expression property, click under Value to display the
button.
2. Click the
button to open Expression Builder. For examples of how to use Expression Builder, see the Expression
Builder topic.
3. Create the exit expression and click OK.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
292
Voice Blocks Basic
Using the Looping Block (Counter-based without a Data Source)
1. Add a Looping block and connect the previous block outport to the Looping block.
2. Connect the Next outport to the sequence of connected blocks.
3. Connect the outport of the last block in the sequence in step 2 back to the looping block to form a loop.
4. Connect the Exit outport of the looping block to the block(s) to continue processing after the loop has exited. The
diagram when a looping block is used should appear as follows:
FOR loop: To iterate over the PromptCounter block 10 times, the following properties are set:
1. Counter Initial Value is 1.
2. Counter Variable Name is Variable(MyCounterVariable).
3. Counter Max Value is 10.
WHILE loop: To iterate over the PromptCounter block until a condition is satisfied, the following property is set: Exit
expression is loginSuccessful != true.
Using the Looping Block with a DB Data/Context Services Block
1. Add a Looping block and connect the DB Data/Context Services block outport to the Looping block.
Composer Help
293
Voice Blocks Basic
2. Connect the Next outport to the sequence of connected blocks.
3. Connect the outport of the last block in the sequence in step 2 back to the looping block to form a loop.
4. Connect the Exit outport of the looping block to the block(s) to continue processing after the loop has exited. The
diagram when a looping block is used should appear as follows:
CURSOR/FOREACH loop: To iterate over the PromptColumn1 block for each record returned by the DBData1
block, the following property is set: Data Source = Block Reference (DBData1) This example assumes variables
were mapped for Column1 in DB Data1. If variables were not mapped, then another Assign block would be needed
to store the value into a variable and the variable is then specified in the PromptColumn1 block.
Composer Help
294
Voice Blocks Basic
Menu Block
The Menu block collects DTMF and/or speech input from the caller. Typically, you use it for directed input choices
(such as selecting to pay bills, get account balances, and so on) so that users are directed to the correct place in
the application to perform their transactions, talk to an operator, or other options. In case of speech applications,
tones can be associated with phrases to allow either speech or DTMF input from the caller. The phrases and tones
are defined in the Menu tab. In case of user input blocks (Menu, Input, Record, Transfer), Composer adds a global
variable of type "Block" to the variables list. You can conveniently use this variable for accessing the user input
value. The Menu block has the following properties:
Menu Block Exception Events
The Menu block has four local exception events as described in Exception Events.
• error
• error.noresource
• noinput
• nomatch
Number of Allowed Retries Exceeded
Assume you need to configure the following use case:
1. User is allowed one invalid entry attempt and one no input attempt. User will then be re-prompted and given a chance
to repeat the attempt.
2. When all allowed attempts are exceeded, the user hears a prompt (something like You have exceeded the number of
possible retries; please call us later when you have correct information. Good bye).
3. At this point, the call should be terminated (or transferred to an agent or some other action taken.
To handle step 2 during application design: In Menu/Input blocks, move exceptions (nomatch, noinput) to
supported events. You can then define the flow path(s) for the case when number of attempts is exceeded. The
Composer Help
295
Voice Blocks Basic
callflow below illustrates this configuration:
Name Property
Please find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties.
Language Property
The language set by this property overrides any language set by the Set Language block, the Project preferences,
or the incoming call parameters. The property takes effect only for the duration of this block, and the language
setting reverts back to its previous state after the block is done. In the case of the Menu block, this property affects
the language of grammars of TTS output:
1. Click under Value to display a down arrow.
Composer Help
296
Voice Blocks Basic
2. Click the down arrow and select English - United States (en-US) or the variable that contains the language.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Menu Mode Property
To assign a value to the Menu Mode property:
1. Select the Menu Mode row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
DTMF
The DTMF format indicates the menu option mode of input will be via the telephone keypad.
Voice
The Voice format indicates the menu option mode of input will be a voice phrase.
Composer Help
297
Voice Blocks Basic
Hybrid
The Hybrid menu mode will handle both DTMF and Voice inputs, that is via telephone keypad and voice phrase.
Note: If you select the Hybrid menu mode, you will have to provide both voice and DTMF values for all menu
options.
Menu Options Property
Use the Menu Options property to add phrases and/or tones to the VoiceMap. To add, delete, or arrange menu
options:
1. Click the Menu Options row in the block's property table.
2. Click the
button to open the Menu Options dialog box.Available Menu Details fields depend on the option
selected in the Menu Mode property.
For DTMF mode:
• Name*-- Displays the name of the menu option.
• DTMF-Option*--Indicates where the option appears on the menu (1 for first option, 2 for second option, and so on).
• Return Value*--Displays the menu option's return value.
• Post Action*--Specify a script (optional).
For Voice mode:
• Name*-- Displays the name of the menu option.
• Voice-Option*--Allows input of a voice phrase that will be played for the menu option.
• Return Value*--Displays the menu option's return value.
• Post Action*--Specify a script (optional).
For Hybrid mode:
• Name*-- Displays the name of the menu option.
• DTMF-Option*--Indicates where the option appears on the menu (1 for first option, 2 for second option, and so on).
• Voice-Option*--Allows input of a voice phrase that will be played for the menu option.
• Return Value--Displays the menu option's return value.
• Post Action*--Specify a script (optional).
Menu Options Table
In a new Menu block, four menu options populate the Menu Options table by default. To set or change one of the
existing menu options:
1. Select a menu option in the Menu Options table to enable Menu Options fields.
Composer Help
298
Voice Blocks Basic
2. In the Name* box, change the default name to a more descriptive name.
3. From the DTMF-Option* drop-down list, select a numeric value to indicate the order that this option will appear in the
menu.
4. In the Return Value box, type a return value for this menu option.
5. Composer 8.1.410.14 adds a new POST ACTION column. Click to open Expression Builder where you can define a
script for post-processing. The Post processing script get executed if the configured option/condition was selected.
Add Button
Use the Add button to add a new menu option.
1. In the Name* box, change the default name to a more descriptive name.
2. From the DTMF-Option* drop-down list, select a numeric value to indicate the order that this option will appear in the
menu.
3. In the Return Value box, type a return value for this menu option.
Up/Down Buttons
Use the Up and Down buttons to reorder your menu option elements. Select the element you want to reposition,
and then click Up or Down, as necessary.
Delete Button
To delete a menu option:
1. Select an entry from the list.
2. Click Delete.
Repeat Menu Option Property
Use for specifying a Repeat DTMF key that will cause the menu to be replayed to the caller, from the beginning.
The generated VXML will use a <reprompt/> when this DTMF is entered by the caller. Composer's variable support
and application root document support allows specifying the same key across blocks. To enable the re-prompting
functionality for both DTMF and ASR, you can connect a Menu block outport back to the Menu block itself. To
specify:
1. Click the Repeat Menu Options row in the block's property table.
2. Click the
button to open the Repeat Menu Options dialog box.
3. Click Add.
4. Name the option.
5. Click the down arrow and select a number to indicate where the option appears on the menu (1 for first option, 2 for
second option, and so on).
6. Specify the menu option's return value.
Composer Help
299
Voice Blocks Basic
7. Click OK.
Use Utterance to Segment Property
Select true or false. You can use this property for Menu block segmentation based on input utterance (the raw
string of words that were recognized by the platform). If set to false, Menu block segmentation is based on menu
options or return values.
Output Result Property
You must use the Output Result property to assign the collected data to a user-defined variable for further
processing. Note! This property is mandatory. You must select a variable for the output result even if you do not
plan on using the variable. If this is not done, a validation error will be generated in the Problems view.
1. Select the Output Result row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
For more information, see Upgrading Projects/Diagrams.
Security Property
When the Security property is set to true, data for this block is treated as private. GVP will consider the data
associated with this block as sensitive and will suppress it in platform logs and metrics. To assign a value to the
Security property:
1. Select the Security row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Clear Buffer Property
Use the Clear Buffer property for clearing the DTMF digits in the key-ahead buffer. If it is not set to true, the DTMF
digits entered are carried forward to the next block. It is commonly used for applications the caller is familiar with.
For example, the caller hears a welcome prompt but knows the next prompt will solicit the caller's input or menu
selection. The caller may start inputting with dtmf while the welcome prompt plays and expect the input to carry
forward. To assign a value to the Clear Buffer property:
1. Select the Clear Buffer row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
300
Voice Blocks Basic
Interruptible Property
This property specifies whether the caller can interrupt the prompt before it has finished playing. To assign a value
to the Interruptible property:
1. Select the Interruptible row in the block's property table.
2. In the Value field, select true,false,or DTMF (for DTMF barge-in mode support) from the drop-down list.
Prompts Property
Find this property's details under Common Properties. Note: When Type is set to Value and Interpret-As is set to
Audio, you can specify an HTTP or RTSP URL. When Type is set to Variable and Interpret-As is set to Audio, you
can specify a variable that contains an HTTP or RTSP URL. Starting with 8.1.410.14, validation displays a warning
message if a resource file does not exist.
Timeout Property
The Timeout property defines the length of the pause between when the voice application plays the last data in the
list, and when it moves to the next block. To provide a timeout value:
1. Select the Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Get Shadow Variables Property
Shadow variables (optional) provide a way to retrieve further information regarding the value of an input item. By
setting this property to true, it will expose the block’s shadow variable within the callflow. When enabled, the
shadow variable will be included in the list of available variables. (For example, the Log block’s Logging Details will
show Menu1$.) A shadow variable is referenced as blockname$.shadowVariable, where blockname is the value of
the input item's name attribute, and shadowVariable is the name of a specific shadow variable, for example:
Menu1$.duration. Shadow variables can provide platform-related information about the interaction/input. For
example, for speech recognition, this may be the confidence level the platform receives from the ASR engine about
how closely the engine could match the user utterance to specified grammar. To assign a value to the Get Shadow
Variables property:
1. Select the Get Shadow Variables row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
301
Voice Blocks Basic
Number of Allowed Attempts Exceeded Property
Determines how many opportunities the user will be provided to re-enter the value. If Use Last Prompt Indefinitely is
set to true, this property has no effect; otherwise, the error.com.genesyslab.composer.toomanynomatches
or error.com.genesyslab.composer.toomanynoinputs errors will be raised on reaching the maximum retry
limit. To provide a value for the number of retries allowed:
1. Select the Number Of Retries Allowed row in the block's property table.
2. In the Value field, type a value for the number of retries that will be allowed.
Retry Prompts Property
Find this property's details under Common Properties.
Use Last Reprompt Indefinitely Property
If you set the Use Last Reprompt Indefinitely property to true, the application uses your last reprompt as the prompt
for all further retries. Therefore, the exception handlers that come out for nomatch and noinput are redundant--even
if you set the default exceptions that come out as red dots on the left-side of the block. To assign a value to the Use
Last Reprompt Indefinitely property:
1. Select the Use Last Reprompt Indefinitely row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Use Original Prompts Property
If you set the Use Original Prompts property to true, in the event of an error requiring a retry, the application first
plays back the retry error prompt, and then plays back the original prompt for the block (as specified in the Prompts
property). To assign a value to the Use Original Prompts property:
1. Select the Use Original Prompts row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Use Single Counter For Nomatch And Noinput Property
If you set the Use Single Counter For Nomatch And Noinput property to true, the application maintains a single
combined counter for the nomatch and noinput errors. For example, if the block has three nomatch retry messages
and three noinput retry messages, the user gets three retry attempts. If you do not select this option, the application
generates a total of six retries; and the user gets up to six retry attempts while not exceeding three of each type --
Composer Help
302
Voice Blocks Basic
noinput or nomatch. Note: This property not available on the Record block. To assign a value to the Use Single
Counter For Nomatch And Noinput property:
1. Select the Use Single Counter For Nomatch And Noinput row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
303
Voice Blocks Basic
Prompt Block
Use the Prompt block to play specific data to the caller. For a video tutorial on using the Prompt block, see
Integrated Voice and Route Application.
The Prompt block has no page exceptions.
The Prompt block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Language Property
The language set by this property overrides any language set by the Set Language block, the Project preferences,
or the incoming call parameters. The property takes effect only for the duration of this block, and the language
setting reverts back to its previous state after the block is done. In the case of the Prompt block, this property affects
the language of grammars of TTS output:
1. Click under Value to display a down arrow.
2. Click the down arrow and select English - United States (en-US) or the variable that contains the language.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
304
Voice Blocks Basic
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Clear Buffer Property
Use the Clear Buffer property for clearing the DTMF digits in the key-ahead buffer. If it is not set to true, the DTMF
digits entered are carried forward to the next block. It is commonly used for applications the caller is familiar with.
For example, the caller hears a welcome prompt but knows the next prompt will solicit the caller's input or menu
selection. The caller may start inputting with dtmf while the welcome prompt plays and expect the input to carry
forward. To assign a value to the Clear Buffer property:
1. Select the Clear Buffer row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Immediate Playback Property
Important! See Note in Timeout section below.
• When Immediate Playback is set to true, prompts are played immediately on the execution of the prompt without
queuing them.
• When Immediate Playback is set to false (default), the interpreter goes to the transitioning state and queues the TTS
Prompt until the interpreter waits for an input (such as the Menu, Input, Record,and Transfer blocks.
To assign a value to the Immediate Playback property:
1. Select the Immediate Playback row in the block's property table.
2. In the Value field, select true or false from the drop-down list. Selecting false will causes prompts only to be played
when waiting for input. Set to false if you want prompts to be played consistent with the VXML default behavior as
described below. Otherwise select true to have Composer force immediate playback.
VXML Behavior and Queueing of Prompts
A prompt gets played only when the platform is waiting for input. As described in Voice Extensible Markup
Language (VoiceXML) Version 2.0, section 4.1.8, a VoiceXML interpreter is at all times in one of two states:
Composer Help
305
Voice Blocks Basic
• waiting for input in an input item (such as <field>, <record>, or <transfer>), or
• transitioning between input items in response to an input (including spoken utterances, dtmf key presses, and inputrelated events such as a noinput or nomatch event) received while in the waiting state. While in the transitioning state
no speech input is collected, accepted or interpreted...
The waiting and transitioning states are related to the phases of the Form Interpretation Algorithm as follows:
• the waiting state is eventually entered in the collect phase of an input item (at the point at which the interpreter waits
for input), and
• the transitioning state encompasses the process and select phases, the collect phase for control items (such as
<block>s), and the collect phase for input items up until the point at which the interpreter waits for input.
An important consequence of this model is that the VoiceXML application designer can rely on all executable
content (such as the content of <filled> and <block> elements) being run to completion, because it is executed
while in the transitioning state, which may not be interrupted by input. While in the transitioning state, various
prompts are queued, either by the <prompt> element in executable content or by the <prompt> element in form
items. In addition, audio may be queued by the fetchaudio attribute. The queued prompts and audio are played
either
• when the interpreter reaches the waiting state, at which point the prompts are played and the interpreter listens for
input that matches one of the active grammars, or
• when the interpreter begins fetching a resource (such as a document) for which fetchaudio was specified. In this case
the prompts queued before the fetchaudio are played to completion, and then, if the resource actually needs to be
fetched (i.e. it is not unexpired in the cache), the fetchaudio is played until the fetch completes. The interpreter
remains in the transitioning state and no input is accepted during the fetch.
Interruptible Property
This property specifies whether the caller can interrupt the prompt before it has finished playing. To assign a value
to the Interruptible property:
1. Select the Interruptible row in the block's property table.
2. In the Value field, select true,false,or DTMF (for DTMF barge-in mode support) from the drop-down list.
Note: For Prompts to be interruptible, there must be a an input block (Menu, Input, etc.) in the execution path. If
there are no such blocks further down in the execution path, the Interruptible property has no effect.
Prompts Property
Find this property's details under Common Properties. Note: When Type is set to Value and Interpret-As is set to
Audio, you can specify an HTTP or RTSP URL. When Type is set to Variable and Interpret-As is set to Audio, you
can specify a variable that contains an HTTP or RTSP URL. Starting with 8.1.410.14, validation displays a warning
message if a resource file does not exist.
Composer Help
306
Voice Blocks Basic
Timeout Property
The Timeout property defines the length of the pause between when the voice application plays the last data in the
list, and when it moves to the next block. To provide a timeout value:
1. Select the Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Note: Composer does not honor the Timeout setting if you keep the Immediate Playback default setting (=false); for
example, where sequential prompts are used. In order for Composer to honor the timeout, you must set Immediate
Playback to true.
Composer Help
307
Voice Blocks Basic
Raise Event Block
Use the Raise Event block for Composer to throw custom events. You specify the event name and a message,
which is selection of a dynamic variable. It is a terminating block (can end an application instead of an Exit block).
Orchestration Server 8.1.2+ versions are required for Raise and Cancel Event blocks.
Also see CustomEvents.
The Raise Event block has the following properties:
• The Raise Event block has no page exceptions.
Name Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Block Notes Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Delay Property
Enter the timeout or select a variable. Maps to <send delay>.
Unit Property
Select seconds or milliseconds for the delay. Maps to <send delay>.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
308
Voice Blocks Basic
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Event Property
Select the variable or enter a value. Maps to <send event>.
Parameters Property
Add a list of key-values. Maps to <param>.
Enable Status
This property controls whether or not a block contributes code to the application. You may wish to use this property
if there is a need to temporarily remove a block during debugging or, for other reasons during development,
temporarily disable a block. This saves the effort of having to remove the block and then add it back later.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
309
Voice Blocks Basic
Record Block
The Record block records voice input from the caller. Also see Number of Allowed Attempts Exceeded Property. In
case of user input blocks (Menu, Input, Record, Transfer), Composer adds a global variable of type "Block" to the
variables list. You can conveniently use this variable for accessing the user input value. The Record block has the
following properties: Record Block Exception Events The Record block has four exception events as described in
Exception Event Descriptions:
• error
• error.badfetch
• noinput]] (supported by default)
• error.com.genesyslab.composer.recordCapture.failure
Name Property
Please find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties.
Language Property
The language set by this property overrides any language set by the Set Language block, the Project preferences,
or the incoming call parameters. The property takes effect only for the duration of this block, and the language
setting reverts back to its previous state after the block is done. In the case of the Record block, this property affects
the language of grammars of TTS output:
1. Click under Value to display a down arrow.
2. Click the down arrow and select English - United States (en-US) or the variable that contains the language.
Composer Help
310
Voice Blocks Basic
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Output Result Property
You must use the Output Result property to assign the collected data to a user-defined variable for further
processing. Note! This property is mandatory. You must select a variable for the output result even if you do not
plan on using the variable. If this is not done, a validation error will be generated in the Problems view.
1. Select the Output Result row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
For more information, see Upgrading Projects/Diagrams.
Web Server Record File Name Property
User-defined variable (to be assigned) containing the file name of the recorded file located in the folder as specified
in the Capture Location property.
1. Select the Web Server Record File Name row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
Composer Help
311
Voice Blocks Basic
Prompts Property
Find this property's details under Common Properties. Note: When Type is set to Value and Interpret-As is set to
Audio, you can specify an HTTP or RTSP URL. When Type is set to Variable and Interpret-As is set to Audio, you
can specify a variable that contains an HTTP or RTSP URL. Starting with 8.1.410.14, validation displays a warning
message if a resource file does not exist.
Timeout Property
The Timeout property defines the length of the pause between when the voice application plays the last data in the
list, and when it moves to the next block. To provide a timeout value:
1. Select the Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Audio Format Property
This property specifies the audio format for the recording.
1. Select the Audio Format row in the block's property table.
2. In the Value field, select a format value from the drop-down list.
You can modify this value in order to specify enhanced format information such as the codec and the rate as in the
following: audio/x-wav;codec=g729;rate=<rate>
Beep Before Recording Property
The Beep Before Recording property indicates whether a beep sound will be played for the caller just before
recording begins. When set to true, a beep sound will be played; when set to false, no beep will be played. To
assign a value to the Beep Before Recording property:
1. Select the Beep Before Recording row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Dtmf Term Character Property
The Dtmf Term Character property defines any character that callers can input in order to indicate that they have
finished entering data. For example, the prompt given to the caller may say "Enter your account number, and then
press the pound key." The pound key is the Dtmf-ending character. To provide a value for the Dtmf Term Character:
Composer Help
312
Voice Blocks Basic
1. Select the Dtmf Term Character row in the block's property table.
2. In the Value field, type a value for a character to represent the end of the Dtmf string.
A typical value that is often used, as indicated above, is: # If several different DTMF tones could be used to
indicate the end of data entry, type all values for the supported tones. No separation signs or characters are
required. Examples:
• To use # or * then type the value as #*
• If any numeric key could be used for termination, type the value as 1234567890*#
Final Silence Property
The value supplied for the Final Silence property indicates the amount of silence (in seconds) that is allowed to
elapse before recording will be stopped. The default value is 3 seconds. To provide a value for the Final Silence
property:
1. Select the Final Silence row in the block's property table.
2. In the Value field, type a value for the allowable final silence before recording is stopped.
Max Duration Property
In the context of a Record block, the Max Duration property specifies the maximum recording duration. The default
is 60 seconds. Note: If this is set to 0 (zero), an infinite value is supplied, and there is no upper limit to the recording
duration. To provide a value for the maximum recording duration:
1. Select the Max Duration row in the block's property table.
2. In the Value field, type a value for the maximum recording duration.
Min Duration Property
In the context of a Record block, the Min Duration property specifies the minimum allowed recording duration. The
default is 1 second. To provide a value for the minimum recording duration:
1. Select the Min Duration row in the block's property table.
2. In the Value field, type a value for the minimum recording duration.
Capture Filename Property
A value for the Capture Filename property is required when the Capture Filename Type property is set to the value
useSpecified. To provide a filename for the captured recording:
Composer Help
313
Voice Blocks Basic
1. Select the Capture Filename row in the block's property table.
2. In the Value field, you can:
• Type a name for the recording file.
• Click the down arrow and select a variable.
Capture Filename Prefix Property
A value for the Capture Filename Prefix property is required when the Capture Filename Type property is set to the
value usePrefix. To provide a prefix for the captured recording filename:
1. Select the Capture Filename Prefix row in the block's property table.
2. In the Value field, you can:
• Type a value for the recording file prefix.
• Click the down arrow and select a variable.
Capture Filename Type Property
The Capture Filename Type property indicates the type of the filename for saving the recording. To assign a value
to the Capture Filename Type property:
1. Select the Capture Filename Type row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
• auto-generate a recording filename.
• usePrefix' to add the prefix value specified in the Capture Filename Prefix property to the default name that is
generated for the recording.
• useSpecified to use the value specified in the Capture Filename property as the filename for the recording. In this
case, the file will be overwritten for each call.
Capture Location Property
The Capture Location property specifies the destination path on the Web Application server where the recording is
to be saved.
If no location is specified, the recordings are saved in the working directory the web application server process. This
location may change depending on the web server environment, and therefore, it is recommended that a fixed
location is always specified in the Capture Location property. To specify a capture (recording) location:
1. Click the Capture Location row in the block's property table.
Composer Help
314
Voice Blocks Basic
2. Type a file path where the recording is to be saved that is located on the web server hosting the application. If the web
server is running on Linux, a UNIX-style path can be entered. Composer will not validate the path.
Security Property
When the Security property is set to true, data for this block is treated as private. GVP will consider the data
associated with this block as sensitive and will suppress it in platform logs and metrics. To assign a value to the
Security property:
1. Select the Security row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Use Last Reprompt Indefinitely Property
If you set the Use Last Reprompt Indefinitely property to true, the application uses your last reprompt as the prompt
for all further retries. Therefore, the exception handlers that come out for nomatch and noinput are redundant--even
if you set the default exceptions that come out as red dots on the left-side of the block. To assign a value to the Use
Last Reprompt Indefinitely property:
1. Select the Use Last Reprompt Indefinitely row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Get Shadow Variables Property
Shadow variables (optional) provide a way to retrieve further information regarding the value of an input item. They
can provide platform-related information about the interaction/input. For example, for speech recognition, this may
be the confidence level the platform receives from the ASR engine about how closely the engine could match the
user utterance to specified grammar. By setting this property to true, it will expose the block’s shadow variable
within the callflow. When enabled, the shadow variable will be included in the list of available variables. (For
example, the Log block’s Logging Details will show Record1$.) A shadow variable is referenced as
blockname$.shadowVariable, where blockname is the value of the input item's name attribute, and shadowVariable
is the name of a specific shadow variable, for example: Record1$.duration. To assign a value to the Get Shadow
Variables property:
1. Select the Get Shadow Variables row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Number of Retries Allowed Property
The Number Of Retries Allowed property determines how many opportunities the user will be provided to re-enter
the value. If Use Last Prompt Indefinitely is set to true, this property has no effect; otherwise, the
Composer Help
315
Voice Blocks Basic
error.com.genesyslab.composer.toomanynomatches or error.com.genesyslab.composer.toomanynoinputs errors
will be raised on reaching the maximum retry limit. To provide a value for the number of retries allowed:
1. Select the Number Of Retries Allowed row in the block's property table.
2. In the Value field, type a value for the number of retries that will be allowed.
Retry Prompts Property
Find this property's details under Common Properties. Starting with 8.1.410.14, validation displays a warning
message if a resource file does not exist.
Use Original Prompts Property
If you set the Use Original Prompts property to true, in the event of an error requiring a retry, the application first
plays back the retry error prompt, and then plays back the original prompt for the block (as specified in the Prompts
property). To assign a value to the Use Original Prompts property:
1. Select the Use Original Prompts row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
316
Voice Blocks Basic
Release ASR Engine Block
Use the Release ASR Engine block to control when the ASR engine(s) being used in the current session will be
released. The Release ASR Engine block has the following properties: The Release ASR Engine block has no page
exceptions.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Engine Name Property
The optional Engine Name property specifies the name(s) of the ASR engine(s) to release. If no engine is
specified, all open ASR engines will be released. To specify an ASR engine to release:
1. Select the Engine Name row in the block's property table.
2. In the Value field, type the name of the ASR engine to release.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
317
Voice Blocks Basic
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
318
Voice Blocks Basic
Script Block
Script block is used to write custom ECMAScript code and VoiceXML code. The Script block has the following
properties:
Name Property
Click under Value and enter the block name. Composer will use the name to identify the block in the diagram and
as the state name in the code.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Use to configure the exception nodes, with each port being hooked up to an event configured by you and
selectable using Add Custom Event. Find this property's details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Composer Help
319
Voice Blocks Basic
Enable Status Property
Find this property's details under Common Properties.
Script Property
Click under Value to open ExpressionBuilder where you can enter the code.
Composer Help
320
Voice Blocks Basic
Set Language Block
The Set Language block changes the current active language from that set in the Entry block or a previous Set
Language block. The language specified will be used for all subsequent prompts and grammars. This updates the
APP LANGUAGE and APP ASR LANGUAGE global variables to the specified values. All audio and grammar
resources will get picked from the specified language folder under the Resource folder of the Composer Project. Set
Language is only applicable for audio and grammar files in Composer. Note: Locales that are not defined in
Composer must be manually set in the diagram’s Assign block. Example: ASR LANGUAGE=’te-IN’ Also see topic
Developing Multi-Lingual Applications. The Set Language block has the following properties: The Set Language
block has no page exceptions.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Language
To set the active language for prompts and grammars:
1. Select the Language row in the block's property table.
2. In the Value field, select one of the following:
• A language from the list of locales defined in the Project settings.
• A variable that contains the active language.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
321
Voice Blocks Basic
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
322
Voice Blocks Basic
SNMP Block
Use the SNMP block to send SNMP traps from the application. This uses the NGI ‘dest’ extension attribute of the
<log> tag. All application-generated SNMP traps are mapped to a single TrapID as defined by the MCP. The
EnableSNMP voice application variable is a flag to turn SNMP traps on or off from the SNMP block. The SNMP
block has the following properties: The SNMP block has no page exceptions.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
323
Voice Blocks Basic
Message Property
The Message property uses a dynamic variable as the message for the SNMP trap. To assign a variable as an
SNMP trap:
1. Select the Message row in the block's property table.
2. In the Value field, enter the name of the variable containing the message for the SNMP trap.
The SNMP block will append the following information to the log message:
• session-id
• block name
The format will be : <session-id>::<block-name>::<log message>
Composer Help
324
Voice Blocks Basic
Start FCR Block
Use the Start FCR (Start Full Call Recording) block to indicate the start of a recorded audio file. You specify the
audio format of the recorded file, which is saved in the MCP folder specified in the Capture Location property. Once
recording has started, all interactions will be recorded the End FCR block is reached or the call is terminated Notes:
• Starting and stopping at tapped points (as marked by the Start FCR block and either EndFCR block or the end of call)
depends on the Prompt Queuing feature. For this reason, all Prompts between Start FCR and End FCR should have
their Immediate Playback property set to true.
• The enableFCR system variable in the Entry block must be set to true in order to use this block.
The Start FCR block has the following properties: The Start FCR block has no page exceptions.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Audio Format Property
This property specifies the audio format for the recording.
1. Select the Audio Format row in the block's property table.
2. In the Value field, select an audio format value from the drop-down list.
The following audio formats are currently supported:
• audio/vox
• audio/basic
• audio/x-alaw-basic
• audio/x-g726-24
• audio/x-g726
• audio/x-adpcm
• audio/adpcm
Composer Help
325
Voice Blocks Basic
• audio/x-adpcm8
• audio/x-g726-40
• audio/L8
• audio/L16
• audio/x-wav
• audio/wav
• audio/x-wav;codec=ulaw
• audio/wav;codec=ulaw
• audio/x-wav;codec=alaw
• audio/wav;codec=alaw
• audio/x-vox
• audio/x-wav;codec=pcm
• audio/wav;codec=pcm
• audio/x-wav;codec=pcm16
• audio/wav;codec=pcm16
• audio/x-wav;codec=g726
• audio/wav;codec=g726
• audio/x-gsm
• audio/x-g729
You can modify this value in order to specify enhanced format information such as the codec and the rate as in the
following: audio/x-wav;codec=g729;rate=<rate>
Capture Location Property
The Capture Location property specifies the location for the FCR files on MCP. The default value is ..\callrec, but
this value can be changed. To specify a capture (recording) location for the FCR files:
1. Click the Capture Location row in the block's property table.
2. Select the Value field and type a directory path, or keep the default ..\callrec path.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
326
Voice Blocks Basic
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
327
Voice Blocks Basic
Subdialog Block
Use the Subdialog block for invoking VoiceXML subdialogs, which are a mechanism for reusing common dialogs
and building libraries of reusable applications. Subcallflows called from a main callflow encapsulate VXML
subdialogs and provide modularization for large VXML applications. An application can specify the URI of the
subdialog to be invoked, pass parameters, and receive output results. Parameters of type In, Out and InOut are
supported. You have the option to select how the parameters are to be passed to the invoked subdialog. In the
case of Dynamic pages (like JSPs) you can specify the method for sending Get / Post and Use Namelist to indicate
the parameters are to be passed as Query String values.
These two choices do not apply in the case of static subdialogs (such as those generated by Composer Voice). The
Subdialog block also has the ability to invoke subcallflows created by Composer Voice. In this case, autosynchronization of input and output parameters is provided. A developer will be able to select a subcallflow to
invoke from the current Composer Project.
Also see Using Composer Shared Subroutines.
Important
Starting with Composer 8.1.3 versions, the callflow diagram Subdialog block and the workflow
diagram Subroutine block use absolute paths with the Project name to refer to the location of the
selected resource in the Workspace, e.g., workspace:///WFM/Workflows/
subroutine.workflow. Renaming or copying Projects requires a manual update to change the
Project name in the Subroutine and Subdialog blocks.
The Subdialog block has the following properties:
The Subdialog block has no page exceptions.
Name Property
Please find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Composer Help
328
Voice Blocks Basic
Exceptions Property
Find this property's details under Common Properties.
Method Property
This property Indicates the method for invoking the subdialog:
• get--Invoked using HTTP Get
• post--Invoked using HTTP Post. This option is valid only when the parameters are passed as a namelist (Use Namelist
property is set to true). This is generally used when a large amount of data needs to be sent as an input value for a
subdialog.
To select a value for the Method property:
1. Select the Method row in the block's property table.
2. In the Value field, select get or post from the drop-down list.
Type Property
The Type property sets the type of the invoked subdialog. There are two options:
• URL--The invoked subdialog can be found at the location specified in the Uri property.
• ProjectFile--The invoked subdialog is a subcallflow in the Composer Project.
To select a value for the Type property:
1. Select the Type row in the block's property table.
2. In the Value field, select URL or ProjectFile from the drop-down list.
Uri Property
The Uri property specifies the destination (URL or Composer Project) depending on the value of the Type property.
To set a URL destination for the Uri property (Type property is set to URL):
1. Select the Uri row in the block's property table.
2. In the Value field, type a valid URL, or select a variable from the drop-down list.
To set a Composer Project destination for the Uri property (Type property is set to ProjectFile):
1. Click the Uri row in the block's property table.
Composer Help
329
Voice Blocks Basic
2. Click the
button to open the Uri dialog box.
3. Select a callflow in the list.
4. Click OK to close the dialog box.
Composer automatically synchronizes the Input and return variables of the selected sub-callflow with the main
callflow by adding them as Input/Output parameters in the corresponding Subdialog Block. Open the Parameters
Property of the Subdialog Block to assign the desired value. Note: For a selected studio diagram file, right-click the
block's context menu and select the Open Sub Callflow Diagram option to open the chosen Subcallflow diagram file
in the Workbench window.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Security Property
When the Security property is set to true, data for this block is treated as private (for example, credit card account
numbers, Social Security numbers, date of birth information, and so on). GVP will consider the data associated with
this block as sensitive and will suppress it in platform logs and metrics. To assign a value to the Security property:
1. Select the Security row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
330
Voice Blocks Basic
Parameters Property
Use the Parameters property to specify parameters to pass to the invoked subdialog. To specify parameters:
1. Click the Parameters row in the block's property table.
2. Click the
button to open the Parameter Setting dialog box.
If the Type Property is ProjectFile,all the Input/Output parameters are automatically synchronized between the subcallflow and the main callflow. The Input/Output parameters are automatically added based on the sub-callflow
Input/Output parameters. In this case, there are no Add and Delete buttons in the Parameter Setting dialog box as
described below. You must fill in the Variables column.
Add Button
Use the Add button to enter parameter details.
1. Click Add to add an entry to SubDialog Parameters.
2. In the Parameter Name field, accept the default name or change it.
3. From the Parameter Type drop-down list, select In, Out, or InOut:
In
Input parameters are variables submitted to the
subdialog.
Out
Output parameters are variables that the subdialog
returns and will be reassigned back to the current callflow.
InOut
InOut parameters are parameters that act as both input
and output.
1. In the Expression drop-down list, select from among the variables shown, type your own expression, or click the
button to use Expression Builder.
2. In the Definition field, type a description for this parameter.
3. Click Add again to enter another parameter, or click OK to finish.
Delete Button
To delete a parameter:
1. Select an entry from the list.
2. Click Delete.
Use Namelist
Indicates whether the subdialog parameters need to submitted as a namelist (if set to true) to the called subdialog.
To select a value for the Use Namelist property:
Composer Help
331
Voice Blocks Basic
1. Select the Use Namelist row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Fetch Audio Property
Enter the fetchaudio file to play when executing a long-running tasks, such as a server side web query. By default,
Next Generation Interpreter NGI)supplies a built-in fetchaudio file. For information on GVP support of fetchaudio,
see:
• Fetching Properties in GVP Voice XML Help.
• The VoiceXML Properties section of the GVP 8.1 Legacy Genesys VoiceXML 2.1 Reference Manual.
• The Prompt block,VXML Behavior and Queueing of Prompts.
Fetch Audio Delay Property
Enter the length of time to wait at the start of a fetch delay before playing fetchaudio. For more information, see
Fetching Properties in GVP Voice XML Help
Fetch Audio Minimum Property
Enter the minimum length of time to play fetchaudio, once started, even if the fetch result arrives in the meantime.
For more information, see Fetching Properties in GVP Voice XML Help
Fetch Hint Property
Select prefetch or safe to define when XML data files can be fetched. Selecting safe indicates to only load the XML
data file when needed. For more information, see Fetching Properties in GVP Voice XML Help.
Fetch Timeout Property
Enter the timeout for fetches. This is not supported when using Nuance (MRCP). An error.badfetch is thrown when
a fetch duration exceeds fetchtimeout. For more information, see Fetching Properties in GVP Voice XML Help.
Composer Help
332
Voice Blocks Basic
Max Age Property
Enter the maximum acceptable age, in seconds, of cached audio resources. For more information, see Fetching
Properties in GVP Voice XML Help.
Max Stale Property
Enter the maximum staleness, in seconds, of expired cached audio resources.For more information, see Fetching
Properties in GVP Voice XML Help.
Composer Help
333
Voice Blocks Basic
Transfer Block
Use the Transfer block to transfer the call to another destination. By default, blind transfer is enabled, and it has no
outports. However, if you enable bridging, the block will have one or more outports. In case of user input blocks
(Menu, Input, Record, Transfer), Composer adds a global variable of type "Block" to the variables list. You can
conveniently use this variable for accessing the user input value.
Use the Transfer block for non-CTI VXML transfers and Route Request block for CTI transfers.
The Transfer block has the following properties:
Transfer Block Exception Events
The Transfer block has the following exception events as described in Exception Event Descriptions:
• connection.disconect.hangup
• connection.disconnect.transfer (supported by default)
• error (supported by default)
• error.connection.baddestination (supported by default)
• error.connection.noauthorization
• error.connection.noresource
• error.connection.noroute
• error.connection
• error.unsupported.transfer.blind
• error.unsupported.transfer.consultation
• error.unsupported.uri
Name Property
Please find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Composer Help
334
Voice Blocks Basic
Exceptions Property
Find this property's details under Common Properties.
Language Property
The language set by this property overrides any language set by the Set Language block, the Project preferences,
or the incoming call parameters. The property takes effect only for the duration of this block, and the language
setting reverts back to its previous state after the block is done. In the case of the Transfer block, this property
affects the language of grammars used for ASR input:
1. Click under Value to display a down arrow.
2. Click the down arrow and select English - United States (en-US) or the variable that contains the language.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Output Result Property
You must use the Output Result property to assign the collected data to a user-defined variable for further
processing. Note: This property is mandatory. You must select a variable for the output result even if you do not
plan on using the variable. If this is not done, a validation error will be generated in the Problems view.
Composer Help
335
Voice Blocks Basic
1. Select the Output Result row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
For more information, see Upgrading Projects/Diagrams.
Transfer Audio Property
The optional Transfer Audio property plays a prompt to the end user while the number is being dialed out. You
provide the URI of the audio source to play while the transfer attempt is in progress (before the other end answers).
If the callee answers, the interpreter terminates playback of the recorded audio immediately. If the end of the audio
file is reached and the callee has not yet answered, the interpreter plays the audio tones from the far end of the call
(ringing, busy). If the resource cannot be fetched, the error is ignored and the transfer continues. To provide a
Transfer Audio value:
1. Select the Transfer Audio row in the block's property table.
2. In the Value field, type a Transfer Audio value URI (HTTP or RTSP) specifying the location of the audio file to play.
Aai Property
Use the optional Application-to-Application Information (the Aai property) for the data that is to be transferred from
the current application to another application. Use this option to transfer the call to a number that initiates another
voice application. To assign a value to the Aai property:
1. Select the Aai row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property.
Authorization Code Property
GVP supports dialing of an authorization code as part of an outbound call on a two-leg transfer. Use free form text
to specify the authorization code in the application.
Connect Timeout Property
Use the Connect Timeout property for the connection timeout value. The default is 15 seconds. For information on
what happens if a timeout occurs, select Help > Contents and see the GVP 8.1Voice XML 2.1 Reference Help''.
Specifically see Standard VoiceXML > Variables > Transfer, attribute connecttimeout. To provide a timeout value:
1. Select the Connect Timeout row in the block's property table.
Composer Help
336
Voice Blocks Basic
2. In the Value field, type a timeout value, in seconds.
Connect When Property
This property controls when the call is connected to the end point. To assign a value:
1. Select the Connect When row in the block's property table.
2. In the Value field, select answered or immediate from the drop-down list.
Destination Property
The Destination property contains the destination phone number. The destination number can be one of the
following:
• A Virtual Route point number on which the IRD Strategy is loaded
• Extension number of an Agent
• External number
The value must be specified in one of the formats below:
• sip:[user@]host[:port]
• tel:phonenumber e.g., tel:+358-555-1234567
For information on this property, select Help > Contents and see the GVP 8.1 Voice XML 2.1 Reference Help.
Specifically see Standard VoiceXML > Variables > Transfer, attribute dest. To assign a value to the Destination
property:
1. Select the Destination row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property.
Max Call Duration Property
Use the Max Call Duration property for the maximum call duration. The default is 3600 seconds. (This is not
supported for Consultation Transfer Type.) Note: If this is set to 0 (zero), an infinite value is supplied, and there is
no upper limit to the call duration. To provide a value for the maximum call duration:
1. Select the Max Call Duration row in the block's property table.
2. In the Value field, type a value for the maximum call duration.
Composer Help
337
Voice Blocks Basic
Transfer Type Property
Specifies the type of the Transfer, which determines whether or not the caller’s session with the VoiceXML
interpeter resumes after the call initiated by the transfer ends. Note: Composer also supports AT&T blind transfers
with the following options: Out of Band Courtesy, Out of Band Consult, and Out of Band Conference. For more
information on these options, start with the GVP 8.1 Voice XML Reference Help (Help > Contents). Search for
ATTOOBCOURTESY, ATTOOBCONSULT, and ATTOOBCONFERENCE (Transfer topic). Also see the Genesys
Voice Platform 8.1 Deployment Guide. To assign a value to the Transfer Type property:
1. Select the Transfer Type row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
Blind is the default setting. The platform redirects the caller to the agent without remaining in the connection, and it
does not monitor the outcome. Once the caller is handed off to the network, the caller's session with the VoiceXML
application cannot be resumed. The VoiceXML interpeter throws a connection.disconnect.transfer immediately,
regardless of whether the transfer was successful or not.
Bridge causes the platform add the agent to the connection. Document interpretation suspends until the transferred
call terminates. The platform remains in the connection for the duration of the transferred call; listening during
transfer is controlled by any included <grammar>s.If the caller disconnects by going onhook or if the network
disconnects the caller, the platform throws a connection.disconnect.hangup event. If the agent disconnects, then
transfer outcome is set to near_end_disconnect and the original caller resumes her session with the VoiceXML
application.
Consultation causes the consultation transfer to be similar to a blind transfer except that the outcome of the
transfer call setup is known and the caller is not dropped as a result of an unsuccessful transfer attempt. When
performing a consultation transfer, the platform monitors the progress of the transfer until the connection is
established between caller and agent. If the connection cannot be established (e.g. no answer, line busy, etc.), the
session remains active and returns control to the application. As in the case of a blind transfer, if the connection is
established, the interpreter disconnects from the session, connection.disconnect.transfer is thrown, and document
interpretation continues normally. Any connection between the caller and the agent remains in place regardless of
document execution. Note: The selected transfer type will work only if the platform is provisioned to support that
type of transfer.
Variables Property
Important
The Transfer block Variables property is for Transfer signaling (gvp:signalvar) variable
configuration and not for user data. To send user data in the transfer <gvp:transfer> request
use the Route Request block.
This is the list of variables that can be optionally sent by the application as part of the Transfer Request to the far
end. It corresponds to the signalvars extension attribute of the NGI VXML Interpreter. Check the Genesys Voice
VXML 2.1 Reference Manual for more details.
Composer Help
338
Voice Blocks Basic
All variables that are selected (checked) will be sent as part of the signalvars . The name of the variable will be
used as the key name and the actual value will be the corresponding value. Refer to the GVP Documentation for
details on the signalvars attribute. The variable name must match the name of the key that will be sent as
signalvars.
To declare session variables for the application or subcallflow:
1. Click the Variables row in the block's property table.
2. Click the ... button to open a Variables dialog box.
3. Click Add and enter key-value pairs.
4. Click Value is an integer if application.
5. You can also click Remove or Removal All.
Important
The steps below are valid up to 8.1.430.01. After that, the Variables dialog box supports the keyvalue pairs.
To declare session variables for the application or subcallflow:
1. Click the Variables row in the block's property table.
2. Click the ... button to open a Variables dialog box,
3. Select individual variables.
4. You can also click Select All or Deselect All.
5. Click OK.
Method Property
The Method property specifies the type of SIP transfer method that the Media Control Platform (MCP) uses. To
assign a value to the Method property:
1. Select the Method row in the block's property table.
2. In the Value field, select one of the following from the drop-down list (descriptions below):
Bridge
A Bridge method indicates that the Media Control Platform (MCP) bridges the media path.
1. The platform sends an INVITE request to the callee, and a dialog is established between the callee and the platform.
2. The transfer fails if a non-2xx final response is received for the INVITE request.
Composer Help
339
Voice Blocks Basic
This is a two-leg transfer (in other words, it occupies two channels on the platform). The platform stays in the
signaling path and is responsible for bridging the two call legs.
Hkf (Hookflash)
A Hookflash method indicates a transfer using DTMF digits (RFC 2833).
1. The Media Control Platform (MCP) sends DTMF digits on the media channel. The platform leaves it to the media
gateway or switch to perform the transfer on the network.
2. Configurable options enable you to specify whether the call will be disconnected by the platform or by the remote end.
Otherwise, the call is disconnected after a configured timeout.
This is a one-leg transfer (in other words, it occupies only one channel on the platform).
Refer
A Refer method indicates that the transfer is based on a SIP REFER message (RFC 3515).
1. The platform sends a REFER request to the caller, with the callee (as specified in the VoiceXML application) in the
Refer-To: header.
2. The transfer fails if a non-2xx final response is received for the REFER.
This is a one-leg transfer (in other words, it occupies only one channel on the platform).
Referjoin
A Referjoin method indicates a consultative REFER transfer (RFC 3891).
1. The platform sends an INVITE request to the callee, and a dialog is established between the callee and the platform.
2. The platform also sends a REFER request to the caller, with the callee’s information in the Replaces header.
3. The platform considers the transfer to be successful if it receives a BYE from the caller after a 2xx response for the
REFER.
4. The transfer fails if a non-2xx final response is received for the INVITE request or for the REFER request.
This is a two-leg, or join-style, transfer (in other words, it occupies two channels on the platform).
Mediaredirect
A Mediaredirect method indicates a media redirection transfer. The Media Control Platform (MCP) uses SIP to
handle call control between the caller and the callee, and the RTP media channel is connected directly between the
caller and callee.
1. The platform sends an INVITE request to the callee without SDP.
2. If the transfer is proceeding, the callee responds with a 200 OK that includes an SDP offer.
3. The platform forwards the SDP offer in a re-INVITE request to the caller.
4. The caller responds with a 200 OK that includes the SDP answer.
Composer Help
340
Voice Blocks Basic
5. The platform forwards the SDP answer to the callee in an ACK response.
6. The transfer fails if a non-2xx final response is received for the initial INVITE request.
This is a two-leg transfer (in other words, it occupies two channels on the platform). attcourtesy attconsult
attconference attoobcourtesy attoobconsult attoobconference For information on these methods, consult the section
on how the Media Control Platform works in the Genesys Voice Platform 8.1 Deployment Guide.
Disconnect on Answering Machine Property
This property indicates whether or not the FAX / Answering machine has to be detected. To assign a value:
1. Select the Disconnect on Answering Machine row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Do CPA Analysis Property
This property indicates whether or not the platform is enabled to detect who/what answered the call. To assign a
value:
1. Select the Do CPA Analysis row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Get Shadow Variables Property
Shadow variables (optional) provide a way to retrieve further information regarding the value of an input item. They
can provide platform-related information about the interaction/input. For example, for speech recognition, this may
be the confidence level the platform receives from the ASR engine about how closely the engine could match the
user utterance to specified grammar. By setting this property to true, it will expose the block’s shadow variable
within the callflow. When enabled, the shadow variable will be included in the list of available variables. (For
example, the Log block’s Logging Details will show Transfer1$.) A shadow variable is referenced as
blockname$.shadowVariable, where blockname is the value of the input item's name attribute, and shadowVariable
is the name of a specific shadow variable, for example: Transfer1$.duration. To assign a value:
1. Select the Get Shadow Variables row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Transfer Results Property
There are several types of transfer results supported for applications. When you select a transfer result, a
corresponding outport node is added to the block to allow specific actions to be taken for that condition. Please note
Composer Help
341
Voice Blocks Basic
that a default outport is always present. The default path is executed if none of the selected transfer results are set.
The available transfer results are:
• far_end_disconnect (selected by default)
• noanswer (selected by default)
• busy (selected by default)
• near_end_disconnect
Note: Consultation Transfer supports only noanswer, busy, and near_end_disconnect transfer results. To select
transfer results:
1. Click the Transfer Results row in the block's property table.
2. Click the ... button to open the Transfer Results dialog box.
3. Select items from the list of available CPA results, or click Select all or Deselect all as needed.
Input Grammar Dtmf Property
Use the Input Grammar Dtmf (Dual Tone Multi-Frequency) property to specify the DTMF Grammar for the Transfer
block, which accepts DTMF signals or speech input from callers. The DTMF Grammar is processed and handled by
GVP. In the case of external grammars, this specifies the actual path of the grammar file / resource for DTMF
Grammars. This is only valid when the Grammar Type is externalGrammar and Input Mode is dtmf or hybrid. To
assign a value to the Input Grammar Dtmf property:
1. Select the Input Grammar Dtmf row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property. Section 2.3.7.2.1, of the Voice
Extensible Markup Language (VoiceXML) Version 2.0 specification (http://www.w3.org/TR/
voicexml20/#dml2.3.7.2.1), contains the following information on listening for user input during a transfer
(interrupting a transfer): Platforms may optionally support listening for caller commands to terminate the transfer by
specifying one or more grammars inside the <transfer> element. The <transfer> element is modal in that no
grammar defined outside its scope is active. The platform will monitor during playing of prompts and during the
entire length of the transfer connecting and talking phases:
• DTMF input from the caller matching an included DTMF grammar
• an utterance from the caller matching an included speech grammar
A successful match will terminate the transfer (the connection to the callee); document interpretation continues
normally. An unsuccessful match is ignored. If no grammars are specified, the platform will not listen to input from
the caller. The platform does not monitor in-band signals or voice input from the callee.
Composer Help
342
Voice Blocks Basic
Input Grammar Voice Property
Use the Input Grammar Voice property to specify the Voice Grammar for the Input block, which accepts DTMF or
speech input from callers. If you are writing hybrid applications that allow both DTMF and Speech input, specify
both the DTMF and Voice grammars. The Voice grammar is sent to the ASR Engine for processing, whereas the
DTMF grammar is processed by GVP. As a result, you need two separate grammars for Voice and DTMF in the
case of hybrid applications that allow both Voice and DTMF inputs. In the case of external grammars, this specifies
the actual path of the grammar file / resource for ASR Grammars.. This is only valid when Grammar Type is
externalGrammar and Input Mode is voice or hybrid. To assign a value to the Input Grammar Voice property:
1. Select the Input Grammar Voice row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property.
Input Mode Property
To assign a value to the Input Mode property:
1. Select the Input Mode row in the block's property table.
2. In the Value field, select one of the following from the drop-down list (descriptions below):
DTMF
The DTMF format indicates the menu option mode of input will be via the telephone keypad.
Voice
The Voice format indicates the menu option mode of input will be a voice phrase.
Hybrid
The Hybrid menu mode will handle both DTMF and Voice inputs, that is via telephone keypad and voice phrase.
Composer Help
343
Voice Blocks Basic
VXML Form Block
Use this block to embed VXML code directly into a callflow diagram.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Body Property
This property contains all the executable content of the <form> element before directing to a block or external
application.
1. Click opposite Body under Value. This brings up the
2. Click the
button.
button to bring up the Configure Body dialog box.
3. Enter the executable content of the <form> element. .
4. When through, click OK. Note: The editor does not validate against the VXML schema.
Composer Help
344
Voice Blocks Basic
Gotostatements Property
This property allows the you to configure the output nodes of the blocks. An output port is created for every
GOTOStatement item with target enabled.
1. Click opposite Gotostatements under Value. This brings up the
2. Click the
button.
button to bring up the Gotostatements dialog box.
3. Click Add.
4. When Target is disabled, select ProjectFile or URL to indicate the destination application type. When ProjectFile is
selected, you can click the button to enter the URI. When URL is selected, you can click the URI button and specify a
literal or a variable.
5. When URL is selected, you can also click the Parameters button to select a system variable.
6. For each goto statement, specify at least one event, condition, or target (you are not required to complete all three
fields). An output port is created for every goto statement.
• Name--Composer uses the name of the goto statement to label the outport.
• Event--Use to select the event that will trigger the goto statement.
• Condition--The guard condition for this goto statement. The goto statement is selected only if the
condition evaluates to true.
• Target--If a target is set, an outport for that goto statement will appear and you can connect it to other
blocks. If a target is not set, an outport for that goto statement does not appear; in this case, you can add
some VXML code to handle the event.
Composer Help
345
Voice Database Blocks
Voice Database Blocks
The Database palette provides blocks that enable VXML applications to use databases.
Types of Blocks
There are three Database blocks:
• DB Data Block for connecting to a database and retrieving/manipulating information from/in a database.
• DB Prompt Block for speaking out prompts generated using TTS based on the data returned by an associated DB
Data block.
• DB Input Block for accepting a DB Data block as its data source and acting as an input field that accepts input based
on a grammar created from the results returned from the database.
Also see:
• Working with Database Blocks for an overview of database support in Composer including a high level description of
how it works as well as level of support for various databases.
• Supported SQL Datatypes.
Video Tutorial
Below is a video tutorial on using the Database Blocks.
Important Note: While the interface for Composer in this video is from release 8.0.1,
the steps are the basically the same for subsequent releases.
Composer Help
346
Voice Database Blocks
Using the Database Blocks
Using these blocks, VXML applications can connect to databases and query data from them. It also provides blocks
that consume this retrieved data and perform high level operations on it like speaking out the returned data or
accepting user input against a grammar generated from the returned data.
Composer Help
347
Voice Database Blocks
DB Data Block
The DB Data block is used for both routing and voice applications. See the DB Data Block topic in the Common
Blocks book. Also see Working with Database Blocks.
Composer Help
348
Voice Database Blocks
Database Input Block
The DB Input block accepts a DB Data block as its data source and acts as an input field that accepts input based
on a grammar created from the results returned from the database.
It accepts DTMF or speech input. This block differs from the Menu block in that it enables taking input that might not
belong to a simple choice list (as for the Menu block). The DB Input block can be used to collect numerical data; for
example, phone numbers, account numbers, amounts, or speech data, such as a Stock name. It uses speech or
DTMF grammars to define the allowable input values for the user responses. Built-in system grammars are
available for data, such as dates and amount.
The user input result will be stored in a block name variable in the VXML application.
Note: If the DB Input block uses a DB Data block as its data source, it uses only the first column from returned
results to generate the grammar.
The DB Input block can also use a variable as a data source instead of a DB Data block. In this case, grammar for
the input is generated based on data in the array. The variable should represent a JSON array similar to the sample
below:
myVariable=”[[""Google""],[""Apple""],[""Motorola""],[""Samsung""],[""Nokia""]]”
The DB Input block has the following properties:
DB Input Block Exception Events
The DB Input block has four exception events as described in Exception_Event_Descriptions:
• error
• error.noresource
• noinput
• nomatch
Name Property
Please find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Composer Help
349
Voice Database Blocks
Data Source Property
The Data Source property allows you to select the DB Data block that contains a previously-defined database
query. This is used when DBDataBlock is selected as the Data Source Type property value. The results of this
database query will be used to create the input field.
To select the data source (a DB Data block):
1. Select the Data Source row in the block's property table.
2. In the Value field, select the appropriate DB Data block from the drop-down list.
Data Source Type Property
The Data Source Type property allows you to select whether your data source is the contents of a DB Data block or
a variable.
To select the data source type:
1. Select the Data Source Type row in the block's property table.
2. In the Value field, select DBDataBlock or Variable from the drop-down list.
Data Source Variables Property
The Data Source Variables property allows you to select the contents of a variable as your data source. This is
used when Variable is selected as the Data Source Type property value.
To select the variable that serves as your data source:
1. Select the Data Source Variable row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list. This can also be a custom variable you
assigned in the Entry block.
Exceptions Property
Find this property's details under Common Properties.
Language Property
The language set by this property overrides any language set by the Set Language block, the Project preferences,
or the incoming call parameters. The property takes effect only for the duration of this block, and the language
Composer Help
350
Voice Database Blocks
setting reverts back to its previous state after the block is done. In the case of the DB Input block, this property
affects the language of grammars of TTS output:
1. Click under Value to display a down arrow.
2. Click the down arrow and select English - United States (en-US) or the variable that contains the language.
Clear Buffer Property
Use the Clear Buffer property for clearing the DTMF digits in the key-ahead buffer. If it is not set to true, the DTMF
digits entered are carried forward to the next block. It is commonly used for applications that the caller is familiar
with. For example, the caller hears a welcome prompt but knows the next prompt will solicit the caller's input or
menu selection. The caller may start inputting with DTMF while the welcome prompt plays and expect the input to
carry forward.
To assign a value to the Clear Buffer property:
1. Select the Clear Buffer row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Interruptible Property
This property specifies whether the caller can interrupt the prompt before it has finished playing.
To assign a value to the Interruptible property:
1. Select the Interruptible row in the block's property table.
2. In the Value field, select true,false,or DTMF (for DTMF barge-in mode support) from the drop-down list.
Prompts Property
Find this property's details under Common Properties.
Note: When Type is set to Value and Interpret-As is set to Audio, you can specify an HTTP or RTSP URL. When
Type is set to Variable and Interpret-As is set to Audio, you can specify a variable that contains an HTTP or RTSP
URL.
Timeout Property
The Timeout property defines the length of the pause between when the voice application plays the last data in the
list, and when it moves to the next block.
Composer Help
351
Voice Database Blocks
To provide a timeout value:
1. Select the Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Security Property
When the Security property is set to true, data for this block is treated as private. GVP will consider the data
associated with this block as sensitive and will suppress it in platform logs and metrics.
To assign a value to the Security property:
1. Select the Security row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Output Result Property
You must use the Output Result property to assign the collected data to a user-defined variable for further
processing.
• Note! This property is mandatory. You must select a variable for the output result even if you do not plan on using the
variable. If this is not done, a validation error will be generated in the Problems view.
1. Select the Output Result row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
For more information, see Upgrading Projects/Diagrams.
Get Shadow Variables Property
Shadow variables provide a way to retrieve further information regarding the value of an input item.
By setting this property to true, it will expose the block’s shadow variable within the callflow. When enabled, the
shadow variable will be included in the list of available variables. (For example, the Log block’s Logging Details will
show DBInput1$.)
A shadow variable is referenced as blockname$.shadowVariable, where blockname is the value of the input item's
name attribute, and shadowVariable is the name of a specific shadow variable, for example: DBInput1$.duration.
To assign a value to the Get Shadow Variables property:
1. Select the Get Shadow Variables row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
352
Voice Database Blocks
Number of Retries Allowed Property
The Number Of Retries Allowed property determines how many opportunities the user will be provided to re-enter
the value. If Use Last Prompt Indefinitely is set to true, this property has no effect; otherwise, the
error.com.genesyslab.composer.toomanynomatches or error.com.genesyslab.composer.toomanynoinputs errors
will be raised on reaching the maximum retry limit.
To provide a value for the number of retries allowed:
1. Select the Number Of Retries Allowed row in the block's property table.
2. In the Value field, type a value for the number of retries that will be allowed.
Retry Prompts Property
Find this property's details under Common Properties.
Use Last Reprompt Indefinitely Property
If you set the Use Last Reprompt Indefinitely property to true, the application uses your last reprompt as the prompt
for all further retries. In this case the NoMatch and NoInput exception handlers will never get executed, as the retry
loop keeps executing forever.
To assign a value to the Use Last Reprompt Indefinitely property:
1. Select the Use Last Reprompt Indefinitely row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Use Original Prompts Property
If you set the Use Original Prompts property to true, in the event of an error requiring a retry, the application first
plays back the retry error prompt, and then plays back the original prompt for the block (as specified in the Prompts
property).
To assign a value to the Use Original Prompts property:
1. Select the Use Original Prompts row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
353
Voice Database Blocks
Use Single Counter for Nomatch And Noinput Property
If you set the Use Single Counter For Nomatch And Noinput property to true, the application maintains a single
combined counter for the nomatch and noinput errors. For example, if the block has three nomatch retry messages
and three noinput retry messages, the user gets three retry attempts. If you do not select this option, the application
generates a total of six retries; and the user gets up to six retry attempts while not exceeding three of each type –
noinput or nomatch.
Note: This property not available on the Record block.
To assign a value to the Use Single Counter For Nomatch And Noinput property:
1. Select the Use Single Counter For Nomatch And Noinput row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Condition Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Logging Details Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Log Level Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Enable Status Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Composer Help
354
Voice Database Blocks
DB Prompt Block
The DB Prompt block speaks out prompts generated using TTS based on the data returned by an associated DB
Data block. The DB Prompt block will speak each row of the data result set as a sentence. To speak data returned
by a DB Data block in a specific format, Genesys recommends using the Prompt block along with ECMA script. A
template application (Database Query Result Access Project) is provided which demonstrates the use of ECMA
script to allow Prompting of currency and data formats as an example.
Tip
The DB Prompt block speaks out all columns for each record returned by the database as the
result of a query. The ordering of columns and of the records is controlled by the query itself and
DB Prompt plays them all in the same order without any breaks. To introduce breaks or to add
prefix or suffix text to individual columns, you can use a custom query and introduce these
features in that query. For example: SELECT ‘name ‘ + employee.firstname + employee.lastname
+ ‘. . .‘ FROM employee WHERE employee.emp_id < 10. This query will speak out the text name
with a small gap before speaking out each name of each employee returned from the database.
After each record, it will pause for a small period due to the ‘. . .’ literal in the query.
The DB Prompt block has no page exceptions.
The DB Prompt block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Data Source Property
The Data Source property allows you to select the DB Data block that contains a previously-defined database
query. The results of this database query will be used to create the voice prompt. To select the data source (a DB
Data block):
1. Select the Data Source row in the block's property table.
Composer Help
355
Voice Database Blocks
2. In the Value field, select the appropriate DB Data block from the drop-down list.
Language Property
The language set by this property overrides any language set by the Set Language block, the Project preferences,
or the incoming call parameters. The property takes effect only fr the duration of this block, and the language setting
reverts back to its previous state after the block is done. In the case of the DB Prompt block, this property affects
the language of grammars of TTS output:
1. Click under Value to display a down arrow.
2. Click the down arrow and select English - United States (en-US) or the variable that contains the language.
Clear Buffer Property
Use the Clear Buffer property for clearing the DTMF digits in the key-ahead buffer. If it is not set to true, the DTMF
digits entered are carried forward to the next block. It is commonly used for applications the caller is familiar with.
For example, the caller hears a welcome prompt but knows the next prompt will solicit the caller's input or menu
selection. The caller may start inputting with DTMF while the welcome prompt plays and expect the input to carry
forward. To assign a value to the Clear Buffer property:
1. Select the Clear Buffer row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Immediate Playback Property
When Immediate Playback is set to true, prompts are played immediately on the execution of the prompt without
queuing them. When Immediate Playback is set to false, the interpreter goes to the transitioning state and queues
the TTS Prompt until the interpreter waits for an input (such as the Menu, Input, Record,and Transfer blocks). To
assign a value to the Immediate Playback property:
1. Select the Immediate Playback row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Interruptible Property
This property specifies whether the caller can interrupt the prompt before it has finished playing. To assign a value
to the Interruptible property:
1. Select the Interruptible row in the block's property table.
2. In the Value field, select true,false,or DTMF (for DTMF barge-in mode support) from the drop-down list.
Composer Help
356
Voice Database Blocks
Prompts Property
Find this property's details under Common Properties. Note: When Type is set to Value and Interpret-As is set to
Audio, you can specify an HTTP or RTSP URL. When Type is set to Variable and Interpret-As is set to Audio, you
can specify a variable that contains an HTTP or RTSP URL.
Timeout Property
The Timeout property defines the length of the pause between when the voice application plays the last data in the
list, and when it moves to the next block. To provide a timeout value:
1. Select the Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Condition Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Composer Help
357
Voice Database Blocks
Working with Database Blocks
This page contains general information on working with the Database blocks.
Database Connection Profiles
Before you can connect to a database in your application, you need to define a database connection profile that will
maintain all information necessary to connect to a particular instance of a database.
The DB Data block requires that you specify the name of a connection profile in its properties so that it can use that
information to connect to the database at runtime. Multiple connections profiles can be defined in one Project and
these profiles can be shared by multiple DB Data blocks even if they are in different callflows. A connection profile
consists of the basic information required to connect to a database. The information provided in a connection profile
includes the following:
Composer Help
358
Voice Database Blocks
• Profile Name. The internal name that Composer uses to identify connections uniquely.
• Connection Pooling. Select to enable connection pooling, which maintains a set of database connections that can be
reused for requests to databases. You can use this feature to enhance performance by avoiding time-consuming reestablishment of connections to databases.
• Connection Pool Name. Specify a Java Naming and Directory Interface (JNDI) name for the pooled data source.
Composer applications can use any JNDI data source exposed by the web server. The .war files exported by
Composer contain configuration files to support connection pooling with JBoss and WebSphere; other configuration
changes to the web application may be required for other web servers.
• JNDI Namespace. Starting with 8.1.410.14, Composer introduces the JNDI Namespace option for Java Composer
Projects. The default value is java:comp/env. You can edit this value to match your web server/database
requirements. Fore example, you can use JBoss Connection Pooling with MSSQL and Oracle databases for both
callflows and workflows.
• Database Type. The type of database from the list of supported databases
• Hostname. The host on which the database server is running. In case of Database Cluster, Virtual IP/Cluster Alias/
SCAN Name is specified here.
• Port. The TCP port on which the database server is listening for connections. The most commonly used defaults for
supported database types are pre-populated by Composer. If your database server uses custom ports, you will need
to specify them here.
• Instance Name. The MSSQL Instance that need to connect in SQL Server. Port will take precedence if specified. This
field is disabled when Database Type is selected as ORACLE.
• Database Name. The name of the database/catalog for SQLServer and the SID in case of Oracle.
• SID. The check box to specify if value provided in "Database Name" is SID. This check box is disabled when
"Database Type" is MSSQL
• Username. The username that should be used to access the database
• Password. The password that should be used to access the database
• Encrypt. Select the encrypt the password.
• Show. Select to show the password
• Custom Parameters. The supported custom parameters can be included in connection string along with other
parameters. To define custom parameters click on the button "Custom Parameters". In the dialog opened add the
parameter name and value, in the order that need to be appended to connection string.
• Note: Starting with 8.1.410.14, you can use the DB Data block Connection String property to dynamically access the
database at runtime and override the Connection Profile settings in the block.
Configuration for Database Cluster:
• For MSSQL Cluster, Virtual IP/Cluster Alias is specified in Hostname field of Connection Profile. To connect to
particular named instance in cluster, Instance parameter is configured.
• For ORACLE Cluster, Cluster Alias/SCAN Name is specified in Hostname field of Connection Profile.
Additionally, to enable TAF functionality in ORACLE clusters, connection pool is created similar to pooling capability
in other application servers. Connection pool can be created as the example below (This need to be added in
Tomcat server.xml present in Composer installed path) <Resource name="jdbc/oraclePooled" auth="Container"
Composer Help
359
Voice Database Blocks
type="com.mchange.v2.c3p0.ComboPooledDataSource"
factory="org.apache.naming.factory.BeanFactory"
driverClass="oracle.jdbc.driver.OracleDriver"
user="scott"
password="tiger" jdbcUrl="jdbc:oracle:oci:@(DESCRIPTION=(LOAD_BALANCE=on)(FAILOVER=on)
(ADDRESS=(PROTOCOL=tcp)(HOST=172.21.184.70)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)
(HOST=172.21.184.71)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=rac.genesyslab.com)
(FAILOVER_MODE=(TYPE=session)(METHOD=basic))))" />
Encryption:
Parameters under "Encryption" tab allows you to configure SSL encryption and server authentication for Database
connections made during Design time (Query Builder, Stored Procedure) and Runtime. When security is enabled,
SSL encryption is used for all data sent between composer and SQLServer, if the SQL server has a certificate
installed.
To establish a Secure Database connection from Composer, following parameters are to be configured under
encryption tab:
• Secure Connection. Enabling this check box will make all connections from Composer to Database Server encrypted
with a choice of server authentication
• Trust Certificate. Enabling "Secure Connection" and "Trust Certificate" will be sufficient to establish SSL Connection.
When "Trust Certificate" is disabled, other optional attributes are enabled to validate server certificate,
• Match Certificate Subject. This is enabled in order to force the matching of the certificate subject available in Server
Certificate and client's trusted copy.
Composer Help
360
Voice Database Blocks
• Certificate Hostname. This parameter is specified in case the client certificate carries a different subject name than
the server certificate and user wishes to ignore the difference by providing the subject name expected in the server
certificate explicitly.
• Trust Store Location. Location where the Trust Store file is present. The trust store file contains all the certificates
trusted by the client, including the certificate that the server uses to autheticate itself.
• Trust Store Type. JKS truststore is supported when Database Type is ORACLE. This parameter is not editable. This
is not applicable when Database Type is MSSQL
• Trust Store Password. Password to access the trust store.
Certificate configuration for Secure Connection:
• For Java Composer Projects, when "Secure Connection" is enabled and "Trust Certificate" is disabled, certificates are
placed in "TrustStore Location" specified in connection profile.
• For .NET Composer Projects Design time (i.e. for Query Builder and Stored Procedure Builder), certificates are placed
in "TrustStore Location" specified in connection profile.
• For .NET Composer Projects Runtime and MSSQL database, certificates are installed in "Certificate Windows SnapIn" accessed from MMC console in Windows.
• For .NET Composer Projects Runtime and ORACLE database, certificates are installed in Oracle wallet both in client
and server. tnsnames.ora configuration will have service name with TCPS protocol. Example is given below.
SSLTEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCPS)(HOST = dev-rose.us.int.genesyslab.com)(PORT = 2484))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SSLTEST)
)
)
Notes:
To establish a connection profile, you must be working with a Project file that was upgraded to Composer 8.0.2 or
higher from an earlier Composer release. Connection profiles are not available in Projects created using Composer
8.0. They become available after the Project is upgraded. The method for specifying additional pooling parameters
varies based on the database being used and the Project type. Java Composer Projects use the c3p0 library for
both SQLServer and Oracle databases. Otherwise, in the case of Oracle databases, Composer uses the c3p0
library and the library exposes its own configuration parameters for pooling via an XML file. In case of SQLServer,
additional pooling parameters can be specified in the connection string.
Creating/Editing a Connection Profile
To create (or edit) a connection profile:
Composer Help
361
Voice Database Blocks
1. Select the Project for which you are creating a connection profile in the Project Explorer, and expand your project
folder set.
2. Expand the db folder.
3. Double-click the connection.properties file. The Connection Profiles view opens.
4. To create a new profile, click the Add Profile
icon in the Profiles pane. (If you wish to edit an existing profile, you
can select an existing profile in the Profiles pane.)
5. In the Details pane, enter (or update) the appropriate information in each field (fields containing the * character are
required).
6. Click the Save Profile
icon in the upper-right of the Connection Profiles window. You must save the profile in
order for it to be available for selection in the Select Connection Profile dialog box.
7. Test the connection profile by clicking the Test Connection button to connect to the database.
• The message Database connection was successful indicates your connection profile
successfully connected to the intended database.
• The message Database connection failed followed by additional details indicates a problem with
your connection profile. Update the profile, save it, and test it again.
Note: For information on creating the configuration for the connection pool on the application server side, see
Connection Pooling.
Preview Connection Strings
The connection to the database with the specified parameters in the connection profile can be previewed and tested
in the Connection profile editor. In case of Java project as the design and runtime connections use JDBC
connection , JDBC connection string is available to preview and test. In case of Dotnet projects as the design time
uses JDBC connection and runtime uses OLEDB connection, both strings are available to preview and test. Note:
The Dotnet project must be deployed correctly in IIS to preview the OLEDB connection string. The parameters apart
from ones explicitly collected in the editor can be added using the custom parameters dialog which takes the
parameters as a name value pair.
Using the Query Builder
The Composer Query Builder provides a visual method of building a database query without the need to type SQL
code. The Query Builder is accessed through the Query Type property in the DB Data block. It can be used for both
voice callflows and routing workflows. Note: The Query Builder can only be accessed when a valid connection
profile has been created and selected in the Connection Profile property of the DB Data block. The Query Builder
with an example query is shown below.
Composer Help
362
Voice Database Blocks
Building a Database Query
The Query Builder opens when Composer is successfully able to connect to the database specified in your
connection profile. Any schemas, tables (and table synonyms) and columns of the database accessible from the
specified user account are shown in hierarchical format in the Database Structure pane of the Query Builder. In the
example below, EMPLOYEESSYNONYM is a table synonym.
Composer Help
363
Voice Database Blocks
TableSyn.gif
Note: MSSQLServer table synonyms are read from the system table sys.synonyms. Oracle table synonyms are
read from the system table user_synonyms. To build a query:
1. Specify which table columns are returned as query results.
• Select the tables and columns to include in your query by checking appropriate items in the Database
Structure pane. Expand table entries to see the columns. To select all columns in a table, select the
appropriate (All columns) check box under the appropriate table.
• Selected columns and tables appear in the Selected Columns pane. To alter the order in which selected
columns are returned in query results, use the Up and Down buttons to reorder columns within the list.
• To specify the order in which query results should be sorted, click on the Sort Order field for a column
and select a Sort option (ascending or descending). This will automatically fill in the Sort Order, which
indicates the sequence in which multiple sort criteria will be applied. It is possible to sort by multiple
columns and you can change the sorting sequence by clicking on the Sort Priority column. For example,
you might sort a query of names by last name and then sort by first name for those people with the same
last name. In that case, last name has Sort Order 1, and first name has Sort Order 2.
Note: The order in which columns appear in the Selected Columns list does not affect the sort order.
• To specify the variables into which the column values need to be copied, click on the Variable Mapping
field for a column and select a variable. If a variable is specified for a column, DB Data block execution
will result in the column values of the first record being copied into the specified variable. If more than one
record is returned by the query, then use the Looping block along with the DB Data block to iterate over
records and populate the variables specified for the columns.
Composer Help
364
Voice Database Blocks
2. Specify filter criteria. In the Conditions pane, you build the search or filter criteria to identify the data you want to
retrieve from the database. You can can specify multiple conditions.
• Click Add to create a new condition. A new row will be added to the Conditions list. Click on the
Condition column, and then click the
to open the Condition Builder.
• Select a column from the Select Column drop-down list which the search condition will operate on.
• Select the operator (=, <>, <, >, and so on) from the Operator drop-down list. This operator will be used
to compare the specified column with the value specified in the next step.</li>
• In the Value field, type or select your value for the condition depending on the value type option:
• Column Reference: a table column that you can select from a drop-down list. This option
will compare the two selected columns based on the specified operator.
• Application Variable: a variable defined in your application that can be selected from a
drop-down list. At runtime the current value of the selected variable will be used for
comparing the column’s value based on the specified operator.
• Custom Value: a value that is not validated by the query builder and is added directly to
the query. It can be used to specify SQL functions or more complex expression.
• Literal: a value that is interpreted as a string or a number. Type in the literal value. The
value will be enclosed in quotes automatically if it is a string. If the literal value represents
a number, you will need to enclose it in quotes depending on the data type of the selected
column. This option will compare the selected column’s value to the specified literal using
the specified operator.
• Click OK to complete the condition.
• Using the above steps, you can define multiple conditions. These conditions can be combined using
logical operators to further refine your search criteria. You can select AND or OR in the Boolean field to
specify the logical operator.
3. Test your query.
• To test the query, you can click the Preview Data button. This executes the query against the appropriate
database. If the database tables contain data and if any records match the specified conditions, they will
be displayed in the Query Results Preview pane. A message will also show the number of records
returned as a result of the query.
• If you expect that the number of matching records will be large and want to preview a subset of returned
data, click the Limit Rows check box and enter a numeric value to limit the number of returned results.
Note: The message will now show the number of records displayed rather than the actual number of matching
records. The query results preview is shown in the Query Result pane.
4. Click OK to save your query and update the DB Data block with the new query. If you click Cancel, all changes are
discarded and no changes are made to the DB Data block.
Specifying Custom Queries
The DB Data block can use queries specified in a SQL (.sql) file in your Project instead of a query created using the
Query Builder. To use a custom query:
Composer Help
365
Voice Database Blocks
• Create a .sql file in your db folder and specify the filename in the Query File property of the DB Data block. Make sure
that the operation type is SQLScriptFile. Composer will read this file at runtime and use it to query the specified
database.
The ability to use custom queries is useful in cases where the SQL query is already created using other tools, or if
the query uses features not supported by the Visual Query Builder. The next topic describes limitations of the query
builder.
Application Variables
You can use Application variables in custom query files as part of the SQL statement. To use a variable, include its
name within curly braces without the AppState. prefix. For example, the following statement uses varname1 and
varname2. Their values will be substituted at the time the DB Data block queries the database. SELECT
name_of_function({varname1}, {varname2}) from dual Results of the query are stored in a variable as
a two-dimensional JSON array. This data can then be accessed via a Looping block or via scripting in the Assign or
ECMAScript block. For example, if the database result set looks like this in tabular form:
Vegetables
Animals
lettuce
chicken
broccoli
lion
The JSON for the result will look like this: {"db_result":[["lettuce", "chicken"], ["broccoli",
"lion"]],"db_result_columns":["vegetables", "animals"]} Note: An example of custom queries is
in the Database Stocks Template application.
Stored Procedure Helper
If you select StoredProcedure for the Query Type property in the DB Data Block, you can click the
button on
the property row to open the Stored Procedure Helper dialog box. Here you can select a stored procedure, execute
it, and get query results. A completed example is shown below.
Composer Help
366
Voice Database Blocks
Setting up a Stored Procedure Call
The Stored Procedure Helper opens when Composer is successfully able to connect to the database specified in
your connection profile. Any stored procedures in the database accessible from the specified user account are
shown in hierarchical format in the Database Structure pane of the Stored Procedure Helper. To set up a stored
procedure call:
1. Specify which stored procedure should be executed.
2. Select the stored procedure to execute by checking appropriate item in the Database Structure pane.
3. Parameters and Return Value appear in the Parameters pane. Specify the value (application variable) for each of the
parameter into which the output value is stored after the stored procedure has executed.
Composer Help
367
Voice Database Blocks
4. To test the stored procedure, click the Execute button. This executes the stored procedure in the appropriate
database. If the stored procedure returns any records, they are displayed in the Query Results Preview pane. Any
output values are displayed in the Query Result Parameters pane. A message shows the number of records returned
as a result of the query.
5. Click OK to save your query and update the DB Data block with the new query. If you click Cancel, all changes are
discarded and no changes are made to the DB Data block.
Note: Composer does not support the REF CURSOR return type in a stored procedure.
Password Encryption
Composer can now encrypt the database connection profile passwords so that they are not written in the clear to
the connection.properties file.
Encryption Key
In order to enable encryption, you must first create an encryption key. Composer requires a 128-bit (16 bytes) key,
in hex-encoded format. This can be randomly generated by the OpenSSL tool, using the following command line:
$ openssl rand -hex 16 75b8ec9a3ce60a21c4f94236a1b55fb2
Any random source will do. Another example is http://www.random.org/cgi-bin/
randbyte?nbytes=16&format=h (With this example, you will have to remove the spaces in the output.)
Save the encryption key to a text file. Note that this file should be securely stored, so that it can only be read by the
Composer process and the backend Tomcat/IIS processes.
Configuring Composer Preferences
In the Composer > Security preference page, set the Encryption Key Location preference to point to the
encryption key file created in the previous step.
Encrypting the Database Connection Profile Password
In the Connection Profile Editor, next to the Password field, enable the Encrypt checkbox. Now, when you save the
Connection Profile, the password will be scrambled in the connection.properties file.
Enabling Decryption in the Backend
When the application runs, the application server will need to be able to decrypt the password so that it can connect
to the database. For this, the application needs to be configured with the location of the encryption key file.
Java Composer Projects
If it doesn't already exist, create the file WEB-INF/composer.properties inside the project. Inside the file, enter the
following line:
Composer Help
368
Voice Database Blocks
composerEncryptionKey=C:\\secrets\\encryption-key.txt
(Note that the backslashes here must be escaped.)
.NET Composer Projects
Edit the web.config file's appSettings entry:
<appSettings>
<add key="composerEncryptionKey" value="C:\secrets\encryption-key.txt" />
...
</appSettings>
(Backslashes here are fine.)
Limitations and Workarounds
The Query Builder supports creating SELECT statements. The following is a list of limitations along with suggested
workarounds:
• INSERT, UPDATE, and DELETE statements cannot be created using the Query Builder. Advanced SQL features,
such as outer joins, subqueries, and unions are also not supported. A custom query can be used to overcome these
limitations.
• if you rename a DB Data block, its corresponding SQL statement file in the db folder will not be updated and will not be
valid until you generate code again.
• For details on SQL datatypes supported by Composer, see Supported SQL Datatypes.
Oracle Client Setup for IIS
To set up an Oracle client for Internet Information Services:
1. Install the Oracle client components on the application server.
2. Create a tnsnames.ora file in the C:\oracle\ora81\network\ADMIN folder where C:\oracle is the installation
folder of Oracle client components.
3. Add the following lines to tnsnames.ora where COMPDB1 is any alias of choice, XYZ is the Oracle server,
COMPOSER is the Service Name as configured on the Oracle listener (server). After doing this, you should be able
to connect to Oracle using sqlplus user/pwd@COMPDB1 as the command at the command prompt.
COMPDB1 = (DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =
XYZ.us.int.genesyslab.com)(PORT = 1521)) ) (CONNECT_DATA =
(SERVICE_NAME = COMPOSER)
)
)
4. Create a System DSN using the Data Sources (ODBC) under Administrative Tools.
Composer Help
369
Voice Database Blocks
5. Make sure that Data Source Name specified above is exactly same as the Database Name specified in the
Composer database connection profile and TNS Service Name is the same as the alias in step 3.
6. Click on Test Connection in the database connection profile. The connection should be successful and the
Composer VXML application should be able to connect to the database.
Steps 4, 5 and 6 can be avoided if the alias used in the tnsnames.ora file is same as the database name
specified in Composer.
Composer Help
370
Voice Database Blocks
Supported SQL Datatypes
Composer's DB Data Block can access many common types of data stored in supported databases. The following
tables summarize the level of support that Composer provides. The tables are organized by the Composer project
type (Java or .NET), and by whether you're doing a standard SQL query or executing a stored procedure. The
levels of support that Composer claims:
The levels of support that Composer claims:
?
Datatype is fully supported.
?*
Datatype is supported, but in the Composer UIs (Query
Builder and Stored Procedure Helper), it may appear as
"Unknown" or "Other." The queries themselves will work
?
Datatype is not currently supported.
Supported SQL Server Datatypes
Java Project SQL
query
Java Project
Stored Procedure
.NET Project SQL
query
.NET Project
Stored Procedure
bigint
?
?
?
?
int
?
?
?
?
decimal
?
?
?
?
int
?
?
?
?
numeric
?
?
?
?
smallint
?
?
?
?
tinyint
?
?
?
?
float
?
?
?
?
real
?
?
?
?
date
?
?
?
?
datetime
?
?
?
?
datetimeoffset
?*
?*
?*
?*
char
?
?
?
?
text
?
?
?
?
varchar
?
?
?
?
nchar
?
?
?
?
ntext
?
?
?
?
nvarchar
?
?
?
?
binary
?
?
?
?
Datatype
Composer Help
371
Voice Database Blocks
Java Project SQL
query
Java Project
Stored Procedure
.NET Project SQL
query
.NET Project
Stored Procedure
sql_variant
?
?
?*
?
timestamp
?
?
?
?
Java Project SQL
query
Java Project
Stored Procedure
.NET Project SQL
query
.NET Project
Stored Procedure
number
?
?
?
?
binary_float
?*
?*
?*
?*
binary_double
?*
?
?*
?*
date
?
?
?
?
char
?
?
?
?
varchar
?
?
?
?
varchar2
?*
?*
?*
?*
nchar
?*
?
?*
?
nvarchar2
?*
?
?*
?*
Datatype
Supported Oracle Datatypes
Datatype
Composer Help
372
Voice CTI Blocks
Voice CTI Blocks
CTI (which stands for Computer Telephony Integration) blocks provide interfaces between Genesys Voice Platform
(GVP) and Genesys Framework components and SIP Server. There are six CTI blocks:
• Get Access Number Block for using Get access number to retrieve the access code (number) of a remote site from
an IVR Server.
• Interaction Data Block for sending attached data. Get and Put operations are supported.
• Route Request Block for sending route requests. It uses the Userdata extension attribute for sending back data
attached to an interaction (attached data).
• Statistics Block to retrieve statistics from Stat Server via IServer.
• ICM Interaction Data Block to work with a Cisco product called Intelligent Contact Management (ICM), which
provides intelligent routing and Computer Telephony Integration. You can use the GVP ICM Adapter in VoiceXML
applications when invoking services, responding to requests, and sharing data.
• ICM Route Request Block to transfer a call to Intelligent Contact Management.
Also see Working with CTI Applications.
CTI Scenarios: SIPS versus CTIC
Composer will generate code for both SIP Server and CTI Connection scenarios simultaneously. The code to be
executed at runtime depends on which scenario is active when the voice application runs. No decision is required at
design time. For more information, see the topic CTI Scenarios. Also see the VoiceXML Reference on the Genesys
Voice Platform Wiki.
Composer Help
373
Voice CTI Blocks
CTI Scenarios
There are feature differences between the SIPS and CTIC scenarios. The following table gives a summary of the
CTI blocks, and for each CTI block it lists the differences in behavior for the two CTI scenarios.
CTI Block Name
Supports CTIC Case?
Supports SIPS Case?
Comments
Supported operations in
each scenario:
CTIC:
• PUT
• GET
• DELETE
• DELETEALL
• REPLACE
Interaction Data
Yes
Yes
SIPS:
• PUT
• GET
Types of interaction data
supported: CTIC:
• USERDATA
SIPS:
• USERDATA
Get access number block
can only be used in the
CTIC scenario.
Get access number
Yes
No
Types of interaction data
supported: CTIC:
• USERDATA
• EXTENSIONDATA
Statistics
Yes
No
Statistics block can only be
used in the CTIC scenario.
Types of interaction data
supported:
Route Request
Yes
Yes
CTIC:
• USERDATA
Composer Help
374
Voice CTI Blocks
• EXTENSIONDATA
SIPS:
• USERDATA
Types of transfers supported:
CTIC:
• Blind
• Bridge
SIPS:
• Consultation
• Blind
• bridge
In case a CTI block or feature is used in a CTI scenario in which it is not supported, appropriate exceptions will be
thrown at runtime indicating that the feature is not supported. The table below gives a list of all exceptions that can
be thrown by CTI blocks and other possible CTI-related exceptions that can be thrown if errors are encountered at
runtime.
Block(s)
Interaction Data
Exception
Error Message
Description
Missing <block name> key
error.com.genesyslab.composer.invalidkey
<key name>
This is the event error for
handling an invalid key
name.
error.com.genesyslab.composer.operationtimedout
Operation timed out.
This exception will be
thrown when a <receive>
operation, executed in the
context of a CTIC specific
operation, times out.
<Error string returned by
error.com.genesyslab.composer.receiveerror
CTIC>
If the <receive> fails and
an error is reported by
CTIC, this exception will be
thrown.
Interaction Data
Delete operation not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
userdata DELETE in the
CTI using SIPS scenario.
Interaction Data
DeleteAll operation not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
userdata DELETEALL in
the CTI using SIPS
scenario.
Interaction Data
Replace operation not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
userdata REPLACE in the
CTI using SIPS scenario.
Get access number
AccessNumGet operation
error.com.genesyslab.composer.unsupported
not supported in case of
CTI using SIPServer.
If the user wants to do a
AccessNumGet in the CTI
using SIPS scenario.
Get access number Statistics
Interaction Data
Get access number Statistics
Route Request
Interaction Data
Get access number Statistics
Route Request
Composer Help
375
Voice CTI Blocks
Statistics
Statistics block not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
PeekStatReq or
GetStatReq in the CTI
using SIPS scenario.
Route Request
Consultation transfer is not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using CTIConnector.
If user sets Transfer type
to consultation in case of
CTI using SIPS.
Composer Help
376
Voice CTI Blocks
Get Access Number
The Get access number block uses Get access number to retrieve the access code (number) of a remote site from
an IVR Server. It can be used to get the agent number when the application transfers a call to an agent at a remote
site (remote switch transfers).
Notes:
• This block can be used in CTIC scenario only. It will not work when CTI functionality is accessed using SIP Server.
• This block is not supported when GVP is configured in Network mode.
Get Access Number Block Exception Events
The Get access number block has four exception events as described in Exception_Event_Descriptions:
error.com.genesyslab.composer.invalidkey error.com.genesyslab.composer.receiveerror
error.com.genesyslab.composer.operationtimeout error.com.genesyslab.composer.unsupported (preselected into
the Supported column as a default exception)
The Get access number block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties. The exception error.com.genesyslab.composer. unsupported
is preselected into the Supported column of the Exceptions dialog box as a default exception.
Composer Help
377
Voice CTI Blocks
Variables Property
To declare session variables for the application or subcallflow:
1. Select the Variables row in the block's property table.
2. Click the
button to open the Variable Settings dialog box.
These variables apply only to the Entry block, unless otherwise indicated.
Note: Request URi parameters created in IVR Profiles during the VoiceXML application provisioning are passed to
the Composer generated VoiceXML application as request-uri parameters in the
session.connection.protocol.sip.requesturi session array. An Entry block variable can use these
parameters by setting the following expressions to the variable values: typeof
session.connection.protocol.sip.requesturi['var1'] == 'undefined' ?
"LocalDefaultValue" : session.connection.protocol.sip.requesturi['var1']. If parameters
are set as part of IVR Profiles provisioning in the Genesys VoiceXML provisioning system, and if these parameters
have the same names as variables set in the Entry block's Variables property with the above mentioned
sip.requesturi expression, then the SIP-Request-URI parameters will take precedence over the user
variable values set in the Entry block.
Many blocks enable the use of variables rather than static data. For example, the Prompt block can play the value
of a variable as Text-to-Speech. Variables whose values are to be used in other blocks must be declared here so
that they appear in the list of available variables in other blocks.
The value collected by an Input block or a Menu block is saved as a session variable whose name is the same as
the block name.
Destination Dn Property
To enter a Destination Dn:
1. Select the Destination Dn row in the block's property table.
2. In the Value field, type a Destination Dn.
Remote Switch Location Property
To enter a remote switch location:
1. Select the Remote Switch Location row in the block's property table.
2. In the Value field, type a value specifying the remote switch location.
Remote switch transfers use the AccessNumGet message, which is sent by the IVR to the IVR Server to request
that the call be routed to a remote site. For information on AccessNumGet and the Location parameter, refer to the
IVR SDK XML Developer’s Guide, which is available on the Genesys Technical Support website or on the
Composer Help
378
Voice CTI Blocks
Developer Documentation Library DVD. Refer to the Location parameter. The value of the Location parameter will
be the name of the switch defined in the Configuration Database.
Output Result Property
You must use the Output Result property to assign the collected data to a user-defined variable for further
processing.
Note! This property is mandatory. You must select a variable for the output result even if you do not plan on using
the variable. If this is not done, a validation error will be generated in the Problems view.
1. Select the Output Result row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
For more information, see Upgrading Projects and Diagrams.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
379
Voice CTI Blocks
Interaction Data Block
Use the Interaction Data block for sending attached data. Get and Put operations are supported. Background:
Attached data can be attached to calls by different T-Server clients. For example, an IVR might attach data to a call
by collecting the numbers that callers press on their telephone keypads in response to a prompt. An agent might
also attach data to a call using a desktop application. Once T-Server attaches the data, it becomes interaction data,
which can be used in expressions and for reporting. T-Server stores attached data in AttributeUserData of event
messages.
• Get values are extracted from the User Data received at the start of the call as part of the INVITE to the GVP.
• For Put , the NGI extension <send> tag will be used to send data immediately to the SIP Server. The data will be sent
in the SIP INFO Body.
This block supports working with both SIPServer and CTIConnector CTI scenarios. There are feature differences as
listed in CTI scenarios. Also see the standard VoiceXML session variables documented in the GVP 8.1 VoiceXML
2.1 Reference Help (Help > Contents). The Interaction Data block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties. The Interaction Data block has the following Exception
Events:
• error.com.genesyslab.composer.receiveerror
• error.com.genesyslab.composer.operationtimeout
• error.com.genesyslab.composer.unsupported (pre-selected as a default exception)
• error.com.genesyslab.composer.invalidkey
Composer Help
380
Voice CTI Blocks
Operation Property
This property indicates the type of operation to perform:
• get--to fetch the user data (CTIC and SIPS)
• put--to send updated user data (CTIC and SIPS)
• delete--to delete selected user data (CTIC only)
• deleteall--to delete all user data (CTIC only)
• replace--to replace existing user data with alternate user data (CTIC only)
To select a value for the Operation property:
1. Select the Operation row in the block's property table.
2. In the Value field, select get, put, delete, deleteall, or replace from the drop-down list.
Note: delete, deleteall, and replace are not supported for CTI using SIP Server.
Values Property
The Values property holds the list of variables to be fetched or sent. The name of the variable must match the
UserData key name. Note: All key names for attached data passed from an IRD Strategy must be in all lower case.
To select values:
1. Click the Values row in the block's property table.
2. Click the
button to open the Values dialog box.
3. Select individual global variables, or click Select all or Deselect all.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
381
Voice CTI Blocks
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
1. Click OK.
Composer Help
382
Voice CTI Blocks
Route Request Block
Use the Route Request block for sending route requests. It uses the Userdata extension attribute for sending back
data attached to an interaction (User Data). Attached data can be attached to calls by different T-Server clients. For
example, an IVR might attach data to a call by collecting the numbers that callers press on their telephone keypads
in response to a prompt. An agent might also attach data to a call using a desktop application. Once T-Server
attaches the data, it becomes interaction data, which can be used in expressions and for reporting. T-Server stores
attached data in AttributeUserData of event messages. You can select any application variables to pass as
interaction data. The name of the variable will be used as the Key of the interaction data. The Destination number
represents the target to which the call will be routed. It can be one of following:
• Virtual Route Point Destination Number
• Direct extension of an Agent
• External Number to dial out
This block supports working with both SIPServer and CTIConnector CTI scenarios. There are feature differences as
listed in CTI scenarios. The Route Request block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties. The Route Request block supports the following Exception
Event Descriptions:
• connection.disconect.hangup
• connection.disconnect.transfer
• error
• error.com.genesyslab.composer.unsupported
• error.connection.baddestination (supported by default)
• error.connection.noauthorization
Composer Help
383
Voice CTI Blocks
• error.connection.noresource
• error.connection.noroute
• error.connection
• error.unsupported.transfer.blind
• error.unsupported.transfer.consultation
• error.unsupported.uri
Language Property
The language set by this property overrides any language set by the Set Language block, the Project preferences,
or the incoming call parameters. The property takes effect only for the duration of this block, and the language
setting reverts back to its previous state after the block is done. In the case of the Route Request block, this
property affects the language of grammars used for ASR input:
1. Click under Value to display a down arrow.
2. Click the down arrow and select English - United States (en-US) or the variable that contains the language.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
384
Voice CTI Blocks
Interaction Data Property
To select session variables:
1. Click the Interaction Data row in the block's property table.
2. Click the
button to open the Interaction Data dialog box.
3. Select individual global variables, or click Select all or Deselect all.
4. Click OK.
Transfer Audio Property
The optional Transfer Audio property plays a prompt to the end user while the number is being dialed out. You
provide the URI of the audio source to play while the transfer attempt is in progress (before the other end answers).
If the callee answers, the interpreter terminates playback of the recorded audio immediately. If the end of the audio
file is reached and the callee has not yet answered, the interpreter plays the audio tones from the far end of the call
(ringing, busy). If the resource cannot be fetched, the error is ignored and the transfer continues. To provide a
Transfer Audio value:
1. Select the Transfer Audio row in the block's property table.
2. In the Value field, type a Transfer Audio value URI (HTTP or RTSP) specifying the location of the audio file to play.
Aai Property
Use the optional Application-to-Application Information (the Aai property) for the data that is to be transferred from
the current application to another application. Use this option to transfer the call to a number that initiates another
voice application. To assign a value to the Aai property:
1. Select the Aai row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property.
Connect Timeout Property
Use the Connect Timeout property for the connection timeout value. The default is 30 seconds. To provide a
timeout value:
1. Select the Connect Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Composer Help
385
Voice CTI Blocks
Destination Property
The Destination property contains the destination phone number. The destination number can be one of the
following:
• A Virtual Route point number on which the IRD Strategy is loaded
• Extension number of an Agent
• External number
The value must be specified in one of the formats below:
• sip:[user@]host[:port]
• tel:phonenumber e.g., tel:+358-555-1234567
For information on this property, select Help > Contents and see the Genesys Voice Platform document VoiceXML
Reference Help. Specifically see Standard VoiceXML > Variables > Transfer, attribute dest. To assign a value to
the Destination property:
1. Select the Destination row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described in the Entry block.
Max Call Duration Property
Use the Max Call Duration property for the maximum call duration. The default is 3600 seconds. (This is not
supported for Consultation Transfer Type.) Note: If this is set to 0 (zero), an infinite value is supplied, and there is
no upper limit to the call duration. To provide a value for the maximum call duration:
1. Select the Max Call Duration row in the block's property table.
2. In the Value field, type a value for the maximum call duration.
Transfer Type Property
The Transfer Type property specifies the type of transfer required. To assign a value to the Transfer Type property:
1. Select the Transfer Type row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
Note: The selected transfer type will work only if the platform is provisioned to support that type of transfer.
Composer Help
386
Voice CTI Blocks
Blind
This is the default setting. The platform redirects the caller to the agent without remaining in the connection, and it
does not monitor the outcome. The platform generates a connection.disconnect.transfer event immediately,
regardless of the transfer outcome.
Bridge
The platform adds the agent to the connection, and it remains in the connection for the duration of the transferred
call. Any included grammars control the listening during the transfer. Control of the call always returns to the
application when the transfer ends, regardless of the transfer result. If the caller or network disconnects the call, the
platform generates connection.disconnect.hangup event. If the agent disconnects the call, the transfer outcome is
set to far_end_disconnect. Note: Use this option if the application needs to continue in self-service after the agent
and caller communication is over; for example, to present a survey to the end user.
Method Property
The Method property specifies the type of route request required. To assign a value to the Method property:
1. Select the Method row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
Bridge
A Bridge method indicates that the Media Control Platform (MCP) bridges the media path.
1. The platform sends an INVITE request to the callee, and a dialog is established between the callee and the platform.
2. The route request fails if a non-2xx final response is received for the INVITE request.
This is a two-leg route request (in other words, it occupies two channels on the platform). The platform stays in the
signaling path and is responsible for bridging the two call legs.
Hkf (Hookflash)
A Hookflash method indicates a route request using DTMF digits (RFC 2833).
1. The Media Control Platform (MCP) sends DTMF digits on the media channel. The platform leaves it to the media
gateway or switch to perform the route request on the network.
2. Configurable options enable you to specify whether the call will be disconnected by the platform or by the remote end.
Otherwise, the call is disconnected after a configured timeout.
This is a one-leg route request (in other words, it occupies only one channel on the platform).
Refer
A Refer method indicates that the route request is based on a SIP REFER message (RFC 3515).
Composer Help
387
Voice CTI Blocks
1. The platform sends a REFER request to the caller, with the callee (as specified in the VoiceXML application) in the
Refer-To: header.
2. The route request fails if a non-2xx final response is received for the REFER.
This is a one-leg route request (in other words, it occupies only one channel on the platform).
Referjoin
A Referjoin method indicates a consultative REFER route request (RFC 3891).
1. The platform sends an INVITE request to the callee, and a dialog is established between the callee and the platform.
2. The platform also sends a REFER request to the caller, with the callee’s information in the Replaces header.
3. The platform considers the route request to be successful if it receives a BYE from the caller after a 2xx response for
the REFER.
4. The route request fails if a non-2xx final response is received for the INVITE request or for the REFER request.
This is a two-leg, or join-style, route request (in other words, it occupies two channels on the platform).
Mediaredirect
A Mediaredirect method indicates a media redirection route request. The Media Control Platform (MCP) uses SIP to
handle call control between the caller and the callee, and the RTP media channel is connected directly between the
caller and callee.
1. The platform sends an INVITE request to the callee without SDP.
2. If the route request is proceeding, the callee responds with a 200 OK that includes an SDP offer.
3. The platform forwards the SDP offer in a re-INVITE request to the caller.
4. The caller responds with a 200 OK that includes the SDP answer.
5. The platform forwards the SDP answer to the callee in an ACK response.
6. The route request fails if a non-2xx final response is received for the initial INVITE request.
This is a two-leg route request (in other words, it occupies two channels on the platform).
Get Shadow Variables Property
Shadow variables provide a way to retrieve further information regarding the value of an input item. By setting this
property to true, it will expose the block’s shadow variable within the callflow. When enabled, the shadow variable
will be included in the list of available variables. (For example, the Log block’s Logging Details will show
RouteRequest1$.) A shadow variable is referenced as blockname$.shadowVariable, where blockname is the value
of the input item's name attribute, and shadowVariable is the name of a specific shadow variable, for example:
RouteRequest1$.duration. To assign a value to the Get Shadow Variables property:
1. Select the Get Shadow Variables row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
388
Voice CTI Blocks
Transfer Results Property
To select transfer results:
1. Click the Transfer Results row in the block's property table.
2. Click the
button to open the Transfer Results dialog box.
3. Select items from the list of available CPA results, or click Select all or Deselect all as needed, then click OK.
For each item selected, an outport node is added to allow specific actions to be taken for that condition.
Input Grammar Dtmf Property
Use the Input Grammar Dtmf property to specify the DTMF Grammar for the Input Block. The DTMF Grammar is
processed and handled by GVP. In the case of external grammars, this specifies the actual path of the grammar file
/ resource for DTMF Grammars. This is only valid when the Grammar Type is externalGrammar and Input Mode is
dtmf or hybrid. To assign a value to the Input Grammar Dtmf property:
1. Select the Input Grammar Dtmf row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property.
Input Grammar Voice Property
Use the Input Grammar Voice property to specify the Voice Grammar for the Input block. If you are writing hybrid
applications that allow both DTMF and Speech input, specify both the DTMF and Voice grammars. The Voice
Grammar is sent to the ASR Engine for processing, whereas the DTMF grammar is processed by GVP. As a result,
you need two separate grammars for Voice and DTMF in the case of hybrid applications that allow both Voice and
DTMF inputs. In the case of external grammars, this specifies the actual path of the grammar file / resource for ASR
Grammars.. This is only valid when Grammar Type is externalGrammar and Input Mode is voice or hybrid. To
assign a value to the Input Grammar Voice property:
1. Select the Input Grammar Voice row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property.
Input Mode Property
To assign a value to the Input Mode property:
1. Select the Input Mode row in the block's property table.
Composer Help
389
Voice CTI Blocks
2. In the Value field, select one of the following from the drop-down list:
DTMF
The DTMF format indicates the menu option mode of input will be via the telephone keypad.
Voice
The Voice format indicates the menu option mode of input will be a voice phrase. The Hybrid menu mode will
handle both DTMF and Voice inputs, that is via telephone keypad and voice phrase.
Composer Help
390
Voice CTI Blocks
Statistics Block
Use the Statistics block to retrieve statistics from Stat Server via IServer. The Statistics block enables you to receive
data on statistics such as CurrNumberWaitingCalls and ExpectedWaitTime. Additionally, you can get a full report on
the requested statistics for a specified object in the Configuration Layer. The object may be a queue, route point, or
group of queues.
This block supports the following actions (operations):
• GetStatReq
• PeakStatReq
The Statistics block also uses the <send> tag.
Note: This block can be used in CTIC scenario only. It will not work when CTI functionality is accessed using
SIPServer.
The Statistics block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties. The Statistics block has four page exceptions:
• error.com.genesyslab.composer.invalidkey
• error.com.genesyslab.composer.receiveerror
• error.com.genesyslab.composer.operationtimeout
• error.com.genesyslab.composer.unsupported (pre-selected by default)
Composer Help
391
Voice CTI Blocks
Operation Property
The Operation property indicates the type of operation to perform:
• get—to execute a GetStatReq to return the current value of the requested statistics for the specified object (queue,
routepoint, or group of queues)
• peek—to execute a PeekStatReq to return the value of CurrNumberWaitingCalls or ExpectedWaitTime. It cannot
return any other value.
To select a value for the Operation property:
1. Select the Operation row in the block's property table.
2. In the Value field, select get or peek from the drop-down list.
The following properties apply and must be set if you choose get:
• Object Id
• Object Type
• Server Name
• Statistic Type
The following property applies and must be set if you choose peek:
• Peek Return Value
Note: Statistics can be requested at any time during the call. They must be preconfigured in Genesys Administrator
before they can be used. For more information on configuring statistics, see the Framework Stat Server User's
Guide.
Object Id Property
The Object Id property is used for a GetStatReq (get) operation.
This property works with the Object Type property.
• For RoutePoint, the value is the Alias of the corresponding DN in the Configuration Database.
• For Queue and GroupQueues, the value is the name of the corresponding object in the Configuration Database.
To provide a value for the Object Id:
1. Select the Object Id row in the block's property table.
2. In the Value field, type a value for the Object Id.
Composer Help
392
Voice CTI Blocks
Object Type Property
The Object Type property is used for a GetStatReq (get) operation. As described in the Stat Server Object Types
chapter in the Framework Stat Server User's Guide, valid Object types are:
• Queue
• RoutePoint
• GroupQueues
To provide a value for the Object Type:
1. Select the Object Type row in the block's property table.
2. In the Value field, type a value for the Object Type.
Server Name Property
The Server Name property is used for a GetStatReq (get) operation. This can be the IP address/ hostname or the
fully qualified domain name of the Stat Server.
To provide a value for the Server Name:
1. Select the Server Name row in the block's property table.
2. In the Value field, type a value for the Server Name.
Statistic Type Property
The Statistic Type property is used for a GetStatReq (get) operation. Refer to the Framework Stat Server User's
Guide for details on what the values of these objects can be.
To provide a value for the Statistic Type:
1. Select the Statistic Type row in the block's property table.
2. In the Value field, type a value for the Statistic Type.
Peek Return Value Property
The Peek Return Value property is used for a PeekStatReq (peek) operation. This specifies the application variable
to hold the result–the current number of calls in the queue.
To select a value for the Peek Return Value property:
1. Select the Peek Return Value row in the block's property table.
Composer Help
393
Voice CTI Blocks
2. In the Value field, select CurrNumberWaitingCalls or ExpectedWaitTime from the drop-down list.
Configuring GetStatReq/PeakStatReq Requests
To get GetStatReq/PeakStatReq requests to work
Configure I-Server as follows:
1. In the I-Server Options tab, create the following section: Stat:ExpectedWaitTime
2. Under that section, create the following options/values:
• obj_id = dn@switch ( DN is the DNIS/Routing Point being called. The switch used is that to which SIP
Server is associated in case of behind the switch and the Virtual switch in case of in front of the switch.
Example: 9020@CTI_Switch
• obj_type = SObjectQueue
• server_name = stat_server_name (The name of the Stat Server object in the Configuration Database).
• stat_type = ExpectedWaitTime
• update_frequency = 5
Configure Stat Server as follows:
1. In the Stat Server options tab, create the following section: ExpectedWaitTime
2. Under that section, create the following options/values:
• Category = ExpectedWaitTime
• MainMask = CallWait
• Objects = Queue
• Subject = DNAction
3. Connect applications as follows:
• T-Server IVR
– Message Server
• Ixn-Server
– T-Server_IVR, Stat Server
• URS
– T-Server_IVR, Stat Server, Message Server
• Stat Server
– T-Server_IVR, Message Server
Output Result Property
You must use the Output Result property to assign the collected data to a user-defined variable for further
processing.
Note! This property is mandatory. You must select a variable for the output result even if you do not plan on using
the variable. If this is not done, a validation error will be generated in the Problems view.
Composer Help
394
Voice CTI Blocks
1. Select the Output Result row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
For more information, see Upgrading Projects/Diagrams.
Condition Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Logging Details Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Log Level Property
Find this property's details under CommonPropertiesforCallflowBlocks .
Enable Status Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Composer Help
395
Voice CTI Blocks
ICM Interaction Data Block
ICM refers to a Cisco product called Intelligent Contact Management, which provides intelligent routing and
Computer Telephony Integration. You can use the GVP ICM Adapter in VoiceXML applications when invoking
services, responding to requests, and sharing data. Use this block to send interaction data to ICM. It functions the
same way as the existing Interaction Data block. Composer uses the VXML <gvp:send> tag to implement the ICM
Interaction Data functionality.
ICM Variables
Voice Projects have a Project-level flag (Enable ICM) which controls whether ICM variables are available for
selection and assignment to variables within Composer's Entry block. The Exit block’s Return Values property
dialog allows you to select the ICM variables to be returned. You can also set the Enable ICM flag by right-clicking
the Project in the Project Explorer, selecting Properties, and ICM Support. The types of variables supported by
ICM are:
• CED--This is a single variable with the name ICM_CED. It is automatically added to the variables list in the Entry
block.
• Call variables--There are 10 CallVars, with names ICM_CallVar1 through ICM_CallVar10. They are automatically
added to the variables list in the Entry block.
• ECC variables--These are user-named variables, which are identified by having a prefix of ICM_ECC_user; for
example, ICM_ECC_userMyVariable. In the Application Variables dialog, you can enter the names of the variables
with or without the prefix. Composer provides a mechanism to automatically add the prefix.
Note: In all cases, the Enable ICM flag must be set for ICM variables to be selectable in the Entry block. The ICM
Interaction Data block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Composer Help
396
Voice CTI Blocks
Exceptions Property
Find this property's details under Common Properties. The ICM Interaction Data block has the following exception
events:
• error.com.genesyslab.composer.receiveerror
• error.com.genesyslab.composer.operationtimeout
• error.com.genesyslab.composer.unsupported (pre-selected as a default exception)
• error.com.genesyslab.composer.invalidkey
Values Property
The Values property holds the list of variables to be fetched or sent. The name of the variable must match the
UserData key name. To select values:
1. Click the Values row in the block's property table.
2. Click the
button to open the Values dialog box.
3. Select individual global variables, or click Select all or Deselect all.
4. Click OK.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
397
Voice CTI Blocks
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
398
Voice CTI Blocks
ICM Route Request Block
ICM refers to a Cisco product called Intelligent Contact Management, which provides intelligent routing and
Computer Telephony Integration (CTI). You can use the GVP ICM Adapter in VoiceXML applications when invoking
services, responding to requests, and sharing data. Use the ICM Route Request block to transfer a call to ICM.
Note:This block functions in the same way as the existing Route Request block. Composer uses the VXML
<transfer> tag to implement the ICM Route Request functionality.
• For information on ICM Support and variables, see the figure in topic Project Properties dialog box.
The ICM Route Request block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Exceptions Property
Find this property's details under Common Properties. The following events are supported:
• connection.disconnect.hangup
• connection.disconnect.transfer
• error
• error.connection.noauthorization
• error.connection.baddestination
• error.connection.noresource
• error.connection.noroute
• error.connection
• error.unsupported.transfer.blind
• error.unsupported.transfer.consultation
• error.unsupported.uri
• error.com.genesyslab.composer.unsupported
Composer Help
399
Voice CTI Blocks
Custom events are also supported.
Interaction Data Property
To select session variables:
1. Click the Interaction Data row in the block's property table.
2. Click the
button to open the Interaction Data dialog box.
3. Select individual global variables, or click Select all or Deselect all.
4. Click OK.
Output Result Property
You must use the Output Result property to assign the collected data to a user-defined variable for further
processing. Note! This property is mandatory. You must select a variable for the output result even if you do not
plan on using the variable. If this is not done, a validation error will be generated in the Problems view.
1. Select the Output Result row in the block's property table.
2. In the Value field, click the down arrow and select a variable.
Aai Property
Use the optional Application-to-Application Information (the Aai property) for the data that is to be transferred from
the current application to another application. Use this option to transfer the call to a number that initiates another
voice application. To assign a value to the Aai property:
1. Select the Aai row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property.
Transfer Audio Property
The optional Transfer Audio property plays a prompt to the end user while the number is being dialed out. You
provide the URI of the audio source to play while the transfer attempt is in progress (before the other end answers).
If the callee answers, the interpreter terminates playback of the recorded audio immediately. If the end of the audio
file is reached and the callee has not yet answered, the interpreter plays the audio tones from the far end of the call
(ringing, busy). If the resource cannot be fetched, the error is ignored and the transfer continues. To provide a
Transfer Audio value:
Composer Help
400
Voice CTI Blocks
1. Select the Transfer Audio row in the block's property table.
2. In the Value field, type a Transfer Audio value URI (HTTP or RTSP) specifying the location of the audio file to play.
Connect Timeout Property
Use the Connect Timeout property for the connection timeout value. The default is 30 seconds. To provide a
timeout value:
1. Select the Connect Timeout row in the block's property table.
2. In the Value field, type a timeout value, in seconds.
Connect When Property
This property controls whether the connection is made after the call is picked up, or immediately. Select one of the
following:
• Immediate
• Answered
Destination Property
The Destination property contains the destination phone number. The destination number can be one of the
following:
• A Virtual Route point number on which the IRD Strategy is loaded
• Extension number of an Agent
• External number
The value must be specified in one of the formats below:
• sip:[user@]host[:port]
• tel:phonenumber e.g., tel:+358-555-1234567
For information on this property, select Help > Contents and see the GVP 8.1Voice XML 2.1 Reference Help.
Specifically see Standard VoiceXML > Variables > Transfer, attribute dest. To assign a value to the Destination
property:
1. Select the Destination row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described in the Entry block.
Composer Help
401
Voice CTI Blocks
Max Call Duration Property
Use the Max Call Duration property for the maximum call duration. Default value is 0. This property is not supported
for Consultation and Blind transfer types. Note: If this is set to 0 (zero), an infinite value is supplied, and there is no
upper limit to the call duration. To provide a value for the maximum call duration:
1. Select the Max Call Duration row in the block's property table.
2. In the Value field, type a value for the maximum call duration.
Transfer Type Property
The Transfer Type property specifies the type of transfer required. To assign a value to the Transfer Type property:
1. Select the Transfer Type row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
Blind
This is the default setting. The platform redirects the caller to the agent without remaining in the connection, and it
does not monitor the outcome. Once the caller is handed off to the network, the caller's session with the VoiceXML
application cannot be resumed. The VoiceXML interpreter throws a connection.disconnect.transfer immediately,
regardless of whether the transfer was successful or not.
Bridge
The platform adds the agent to the connection. Document interpretation suspends until the transferred call
terminates. The platform remains in the connection for the duration of the transferred call; listening during transfer is
controlled by any included <grammar>s. If the caller disconnects by going onhook or if the network disconnects the
caller, the platform throws a connection.disconnect.hangup event. If the agent disconnects, then transfer outcome is
set to near_end_disconnect and the original caller resumes her session with the VoiceXML application.
Consultation
The consultation transfer is similar to a blind transfer except that the outcome of the transfer call setup is known and
the caller is not dropped as a result of an unsuccessful transfer attempt. When performing a consultation transfer,
the platform monitors the progress of the transfer until the connection is established between caller and agent. If the
connection cannot be established (e.g. no answer, line busy, etc.), the session remains active and returns control to
the application. As in the case of a blind transfer, if the connection is established, the interpreter disconnects from
the session, connection.disconnect.transfer is thrown, and document interpretation continues normally. Any
connection between the caller and the agent remains in place regardless of document execution. Note: The
selected transfer type will work only if the platform is provisioned to support that type of transfer.
Composer Help
402
Voice CTI Blocks
Method Property
The Method property specifies the type of route request required. To assign a value to the Method property:
1. Select the Method row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
Bridge
A Bridge method indicates that the Media Control Platform (MCP) bridges the media path.
1. The platform sends an INVITE request to the callee, and a dialog is established between the callee and the platform.
2. The transfer fails if a non-2xx final response is received for the INVITE request.
This is a two-leg transfer (in other words, it occupies two channels on the platform). The platform stays in the
signaling path and is responsible for bridging the two call legs.
Hkf (Hookflash)
A Hookflash method indicates a transfer using DTMF digits (RFC 2833).
1. The Media Control Platform (MCP) sends DTMF digits on the media channel. The platform leaves it to the media
gateway or switch to perform the transfer on the network.
2. Configurable options enable you to specify whether the call will be disconnected by the platform or by the remote end.
Otherwise, the call is disconnected after a configured timeout.
This is a one-leg transfer (in other words, it occupies only one channel on the platform).
Refer
A Refer method indicates that the transfer is based on a SIP REFER message (RFC 3515).
1. The platform sends a REFER request to the caller, with the callee (as specified in the VoiceXML application) in the
Refer-To: header.
2. The transfer fails if a non-2xx final response is received for the REFER.
This is a one-leg transfer (in other words, it occupies only one channel on the platform).
Referjoin
A Referjoin method indicates a consultative REFER transfer (RFC 3891).
1. The platform sends an INVITE request to the callee, and a dialog is established between the callee and the platform.
2. The platform also sends a REFER request to the caller, with the callee’s information in the Replaces header.
3. The platform considers the transfer to be successful if it receives a BYE from the caller after a 2xx response for the
REFER.
Composer Help
403
Voice CTI Blocks
4. The transfer fails if a non-2xx final response is received for the INVITE request or for the REFER request.
This is a two-leg, or join-style, transfer (in other words, it occupies two channels on the platform).
Mediaredirect
A Mediaredirect method indicates a media redirection transfer. The Media Control Platform (MCP) uses SIP to
handle call control between the caller and the callee, and the RTP media channel is connected directly between the
caller and callee.
1. The platform sends an INVITE request to the callee without SDP.
2. If the transfer is proceeding, the callee responds with a 200 OK that includes an SDP offer.
3. The platform forwards the SDP offer in a re-INVITE request to the caller.
4. The caller responds with a 200 OK that includes the SDP answer.
5. The platform forwards the SDP answer to the callee in an ACK response.
6. The transfer fails if a non-2xx final response is received for the initial INVITE request.
This is a two-leg transfer (in other words, it occupies two channels on the platform). attcourtesy attconsult
attconference attoobcourtesy attoobconsult attoobconference For information on these methods, consult the section
on how the Media Control Platform works in the Genesys Voice Platform 8.1 Deployment Guide.
Do CPA Analysis Property
Triggers whether the platform will detect who or what answered the call. Select one of the following:
• True
• False (default, no detection)
Get Shadow Variables Property
Shadow variables provide a way to retrieve further information regarding the value of an input item. By setting this
property to true, it will expose the block’s shadow variable within the callflow. When enabled, the shadow variable
will be included in the list of available variables. (For example, the Log block’s Logging Details will show
RouteRequest1$.) A shadow variable is referenced as blockname$.shadowVariable, where blockname is the value
of the input item's name attribute, and shadowVariable is the name of a specific shadow variable, for example:
RouteRequest1$.duration. To assign a value to the Get Shadow Variables property:
1. Select the Get Shadow Variables row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
404
Voice CTI Blocks
Transfer Result Property
To select transfer results:
1. Click the Transfer Results row in the block's property table.
2. Click the
button to open the Transfer Results dialog box.
3. Select items from the list of available CPA results, or click Select all or Deselect all as needed, then click OK.
For each item selected, an outport node is added to allow specific actions to be taken for that condition.
Input Grammar Dtmf Property
Use the Input Grammar Dtmf property to specify the DTMF Grammar for the Input Block. The DTMF Grammar is
processed and handled by GVP. In the case of external grammars, this specifies the actual path of the grammar file
/ resource for DTMF Grammars. This is only valid when the Grammar Type is externalGrammar and Input Mode is
dtmf or hybrid. To assign a value to the Input Grammar Dtmf property:
1. Select the Input Grammar Dtmf row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property.
Input Grammar Voice Property
Use the Input Grammar Voice property to specify the Voice Grammar for the Input block. If you are writing hybrid
applications that allow both DTMF and Speech input, specify both the DTMF and Voice grammars. The Voice
Grammar is sent to the ASR Engine for processing, whereas the DTMF grammar is processed by GVP. As a result,
you need two separate grammars for Voice and DTMF in the case of hybrid applications that allow both Voice and
DTMF inputs. In the case of external grammars, this specifies the actual path of the grammar file / resource for ASR
Grammars.. This is only valid when Grammar Type is externalGrammar and Input Mode is voice or hybrid. To
assign a value to the Input Grammar Voice property:
1. Select the Input Grammar Voice row in the block's property table.
2. In the Value field, select a value from the drop-down list.
Values are the Voice Application Variables described under the Variables Property.
Input Mode Property
To assign a value to the Input Mode property:
1. Select the Input Mode row in the block's property table.
Composer Help
405
Voice CTI Blocks
2. In the Value field, select one of the following from the drop-down list:
DTMF
The DTMF format indicates the menu option mode of input will be via the telephone keypad.
Voice
The Voice format indicates the menu option mode of input will be a voice phrase.
Hybrid
The Hybrid menu mode will handle both DTMF and Voice inputs, that is via telephone keypad and voice phrase.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
406
Voice CTI Blocks
Working with CTI Applications
Composer provides CTI blocks for two CTI scenarios supported by GVP:
• SIP Server (SIPS) scenario, which uses the Genesys SIP Server component to gain access to CTI functionality.
• CTI Connector (CTIC) scenario, which uses GVP’s CTI Connector component to access CTI functionality provided by
Genesys Framework.
These two scenarios do not provide identical capabilities and key differences are highlighted later in these topics.
Composer provides four CTI blocks for accessing CTI functions. It generates VXML for each of these blocks that
can work in either CTI scenario (SIPS or CTIC), and does not ask the user to choose between the SIPS or CTIC
scenarios at design time. The decision to use CTIC or SIPS is made at runtime based on the X-Genesys headers
received from GVP’s Resource Manager. Therefore, the Composer user interface does not need to expose a
Project-level preference for specifying the CTI scenario. Note: The CTI Connector provides different capabilities
depending on the configuration in which other Genesys components like the IServer are deployed. For more details,
please refer to the GVP documentation. Also see GVP Debugging Limitations.
Design Paradigms for CTI Applications
There are two design paradigms for building CTI applications with GVP in which Composer can be used:
• Standard VXML Applications
• URS-Centric Applications
These paradigms differ in the extent to which the VXML application is involved in performing call control. Standard
VXML Applications In this paradigm, the VXML application gets invoked first and can go through VXML
interactions with the caller before using the <transfer> tag to transfer the call to another party such as queuing for
an agent. At this point, the control of the call is passed to the SIP Server or CTI Connector while waiting for an
agent. During this time, SIP Server or CTI Connector may invoke additional call treatments on GVP like playing
music or invoking other applications. URS-Centric Applications In this paradigm, the VXML application is always
invoked as a treatment by Genesys URS. The incoming call is controlled by Genesys URS and a strategy retains
full control of the call. The strategy invokes specific treatments on GVP IVR as a media server to play prompts, play
music, collect user input or execute a VXML application. In this paradigm, the VXML application does not use tags
like <transfer> nor does any other kind of call control. Those decisions are left to the strategy. The VXML
application returns user input collected during the call back to the strategy and lets the strategy make all call control
decisions. Composer can be used to write VXML applications following either of the above paradigms.
Typical CTI Callflow
Before you start building a typical CTI application, the following information is required:
• The Genesys Virtual Route Point destination address. This is the address/location where the Genesys strategy is
present (an integer number--for example, 5001).
Composer Help
407
Voice CTI Blocks
• Strategy application on the Framework side (IRD) to find and transfers the call to an agent.
The following describes the interaction flow of this callflow:
1. GVP starts executing the generated VoiceXML application script.
2. The caller hears the Welcome prompt.
3. The caller is requested to enter the account details.
4. If the caller does not enter the required details within the maximum time frame provided, the caller is asked to retry.
5. The application issues a route request to the route DN configured in the Route Request block. (This occurs via the
<transfer> tag, supported in both CTIC and SIP Server scenarios.)
6. The caller-entered data is sent as UserData to the routed DN, and the called strategy does the knowledge based
transfer to the available agent based on the User Data .
7. This application ends after the Route Request has been issued.
8. The called strategy can play Voice treatments to the caller until the next available agent is available.
9. Finally, the caller will be transferred to the Agent.
Note: The Route Request block can be configured in various Transfer modes (Bridge / Consultation) to gain back
the control of the callflow after the called strategy returns back the execution. Please check the Route Request topic
block for more details.
Composer Help
408
Voice CTI Blocks
CTI Scenarios
There are feature differences between the SIPS and CTIC scenarios. The following table gives a summary of the
CTI blocks, and for each CTI block it lists the differences in behavior for the two CTI scenarios.
CTI Block Name
Supports CTIC Case?
Supports SIPS Case?
Comments
Supported operations in
each scenario:
CTIC:
• PUT
• GET
• DELETE
• DELETEALL
• REPLACE
Interaction Data Block
Yes
Yes
SIPS:
• PUT
• GET
Types of interaction data
supported: CTIC:
• USERDATA
SIPS:
• USERDATA
Get access number block
can only be used in the
CTIC scenario.
Get Access Number Block
Yes
No
Types of interaction data
supported: CTIC:
• USERDATA
• EXTENSIONDATA
Statistics Block
Yes
No
Statistics block can only be
used in the CTIC scenario.
Types of interaction data
supported:
CTIC:
Route Request Block
Yes
Yes
• USERDATA
• EXTENSIONDATA
SIPS:
Composer Help
409
Voice CTI Blocks
• USERDATA
Types of transfers supported:
CTIC:
• Blind
• Bridge
SIPS:
• Consultation
• Blind
• bridge
In case a CTI block or feature is used in a CTI scenario in which it is not supported, appropriate exceptions will be
thrown at runtime indicating that the feature is not supported. The table below gives a list of all exceptions that can
be thrown by CTI blocks and other possible CTI-related exceptions that can be thrown if errors are encountered at
runtime.
Block(s)
Exception
Error Message
Interaction Data Block
Description
Missing <block name> key
error.com.genesyslab.composer.invalidkey
<key name>
This is the event error for
handling an invalid key
name.
error.com.genesyslab.composer.operationtimedout
Operation timed out.
This exception will be
thrown when a <receive>
operation, executed in the
context of a CTIC specific
operation, times out.
<Error string returned by
error.com.genesyslab.composer.receiveerror
CTIC>
If the <receive> fails and
an error is reported by
CTIC, this exception will be
thrown.
Interaction Data Block
Delete operation not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
userdata DELETE in the
CTI using SIPS scenario.
Interaction Data Block
DeleteAll operation not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
userdata DELETEALL in
the CTI using SIPS
scenario.
Interaction Data Block
Replace operation not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
userdata REPLACE in the
CTI using SIPS scenario.
Get Access Number Block
AccessNumGet operation
error.com.genesyslab.composer.unsupported
not supported in case of
CTI using SIPServer.
If the user wants to do a
AccessNumGet in the CTI
using SIPS scenario.
Get Access Number Block,
Statistics Block
Interaction Data Block
Get Access Number Block
Statistics Block, Route Request
Block
Interaction Data Block
Get Access Number Block
Statistics Block Route Request
Block
Composer Help
410
Voice CTI Blocks
Statistics Block
Statistics block not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
PeekStatReq or
GetStatReq in the CTI
using SIPS scenario.
Route Request Block
Consultation transfer is not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using CTIConnector.
If user sets Transfer type
to consultation in case of
CTI using SIPS.
Script ID Usage in the GVP 8 Environment
In Genesys VoiceXML 2.1, ScriptId refers to the script identifier, as generated by the CTI Connector, to handle call
treatments. The use of ScriptId is specific to GVP 7.x and was mandatory for treatments. Since the GVP 7.x design
is "IVR-centric," the treatment would be invoked on the same VXML session. Things are a bit different with GVP 8.x
and the Next Generation Interpreter (NGI) where APP_URI is used instead of ScriptId and the treatments are
executed on different VXML sessions. GVP 8 and NGI In GVP 8.x, request for treatment execution comes in as a
NETANN request with the APP_URI being passed in as a VoiceXML parameter. GVP executes the requested page
to kick off the treatment. Unlike the GVP 7.x environment, treatments get invoked as separate VXML sessions and
terminated at the end of the treatment execution. Hence, ScriptId switching is no longer needed here, unless an
application wants to do branching based on ScriptId.
• Note: Composer provides support for both SIPS and CTIC scenarios for achieving the CTI functionality. However,
SIPS may not support passing additional request-uri parameters like ScriptId, therefore, this option is limited only to
CTIC scenarios.
Please refer to GVP 8.x VXML Help under Sample Voice XML Applications > CTI Interactions > Treatments for
more details on this topic.
Accessing ScriptId in Composer
Use if you want your application to do ScriptId-based switching like GVP 7.x. CTIC Scenario (IRD strategy +
Composer Callflow)
1. Use the APP_ID property in IRD's Play Application block.
2. Define a new Input type variable named ScriptId in the Entry block of your callflow to collect the ScriptId.
Composer Workflow + Composer Callflow)
1. On the VXML callflow side, define a new Input type variable named ScriptId in the Entry block to collect the APP_ID
(i.e., ScriptId) passed from the workflow.
2. On the SCXML workflow side, use the Play Application block to invoke the callflow created using step#1. Then do an
auto-synchronize for the parameters, and specify the ScriptId value.
3. The ScriptId (i.e., APP_ID) passed from the workflow will be automatically collected on the VXML side from the
session.connection.protocol.sip.requesturi array.
SIPS Scenario
Composer Help
411
Voice CTI Blocks
1. SIPS may not support passing additional request-uri parameters. Pass ScriptId as attached data on the strategy side
(If using IRD) or on the SCXML side (If using Composer workflows).
2. Define a new Input type variable named ScriptId in the Entry block to collect the ScriptId.
3. The ScriptId (i.e., APP_ID) passed from the strategy will be automatically collected on the VXML side from the
session.com.genesyslab.userdata array.
Composer Help
412
Voice External Message Blocks
Voice External Message Blocks
The External Messaging palette provides blocks for NGI extensions to send and receive external messages to/from
external entities such as CCXML applications. There are four External Message blocks:
• Receive Block for receiving synchronous and asynchronous SIP INFO messages. This is can be used to receive
messages from CCXML applications.
• Send Data Block, which is a wrapper around the <send namelist> tag) for sending a list of variables as SIP INFO to
the other end point. The data is sent in the form-url-encoded format, in the BODY of the SIP INFO.
• Send Info Block generates the NGI VXML <send body> tag for sending any content in the Body of the SIP INFO. By
default, content-type is set to text/plain. Typically, this can be used in conjunction will CCXML applications.
• Send Event Block generates the NGI VXML <send event> tag to send SIP INFO events or custom events between
the VXML dialog and the CCXML application.
For all the Send [xxx] blocks, you have the option to specify the Wait for response property as true in those blocks
to send the message synchronously.
Composer Help
413
Voice External Message Blocks
Receive Block
Use the Receive block for receiving synchronous and asynchronous SIP INFO messages. This is can be used to
receive messages from CCXML applications.
A typical use case is for a CCXML application to interrupt the VXML dialog in order to take some action.
Depending upon how the data is sent, the content, content-type or event properties will be filled.
The Receive block has the following properties:
The Receive block has no page exceptions.
Name Property
Find this property's details under Name_Property.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Content Property
The Content property is the variable used to collect the content of the received event.
To select a variable:
1. Select the Content row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list.
Content Type Property
The Content Type property is the variable used to collect the content type of the received event.
To select a variable:
1. Select the Content Type row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list.
Composer Help
414
Voice External Message Blocks
By default, Content Type is set to text/plain.
Event Name Property
The Event Name property is the variable used to collect the name of the received event.
To select a variable:
1. Select the Event Name row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list.
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks.
Composer Help
415
Voice External Message Blocks
Send Data Block
Use the Send Data block (a wrapper around the <send namelist> tag) for sending a list of variables as SIP INFO to
the other end point. The data is sent in the form-url-encoded format, in the BODY of the SIP INFO.
Typically, Send Data can be used by VXML applications to send data to a CCXML application or to CTI
applications.
For example, CCXML use cases that use Composer External Messaging Blocks (such as Send Data, Send Info,
and Send Event), see the Genesys Voice Platform 8.1 CCXML Reference Manual. See the Features chapter,
Dialogs section.
When using either the Send Data or Send Info block, the result on the CCXML side is to create a dialog.user. *
event. The name of the event is set to dialog.<event name>.
Dialog User Event Example
The VoiceXML dialog may send a user event to the CCXML application by using the <send namelist="name type
uri"/> tag. Here is an example of the VoiceXML <send> block:
<var name="name" expr="'transfer'"/>
<var name="type" expr="'bridge'"/>
<var name="uri" expr="'1111@205.150.90.19'"/>
<gvp:send namelist="name type uri"/>
The CCXML session receives the following:
15:02:04.416 Int 51030 F9187A00-E558-44C6-61AE-FFA9A066180C-FF326086-ECB5 dlg_event
7|dialog.user.transfer|DD92E8B2-51AD-4F3F-8C8D40AFA169EA9B|values.name="transfer";values.type="bridge";values.uri="1111@205.150.90
.19
This raises a dialog.user.transfer event to the CCXML application that owns the dialog. The event itself
contains the following properties:
event$.values.name=transfer
event$.values.type=bridge
event$.values.uri=1111@205.150.90.19
Composer Help
416
Voice External Message Blocks
Note: The event$ is a generic name for CCXML events, and in the preceding example, it is dialog.user.transfer. The
contenttype attribute is not supported by the <send> tag if the namelist is used.
The Send Data block has the following properties:
The Send Data block has no page exceptions.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Values Property
The Values property holds the list of variables to be sent.
To select values:
1. Click the Values row in the block's property table.
2. Click the
button to open the Values dialog box.
3. Select individual variables, or click Select all or Deselect all.
4. Click OK.
Wait For Response Property
The Wait For Response property allows a message to be sent synchronously (when set to true). By default, data is
sent asynchronously for all the Send [xxx] blocks (when this property is set to false).
To assign a value to the Wait For Response property:
1. Select the Wait For Response row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
417
Voice External Message Blocks
Condition Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Logging Details Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Log Level Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Enable Status Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Composer Help
418
Voice External Message Blocks
Send Event Block
Use the Send Event block, which generates the NGI VXML <send event> tag, to send SIP INFO events or custom
events between the VXML dialog and the CCXML application. Examples: logging events or any event specific to the
dialog and the CCXML application. For more information, see the Genesys Voice Platform 8.1 CCXML Reference
Manual, Event/IO Processor, Sending Events.
The Send Event block has the following properties:
The Send Event block has no page exceptions.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Event Name Property
The Event Name property is the variable used to collect the name of the sent event.
To select a variable:
1. Select the Event Name row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list.
Wait For Response Property
The Wait For Response property allows a message to be sent synchronously (when set to true). By default, data is
sent asynchronously for all the Send [xxx] blocks (when this property is set to false).
To assign a value to the Wait For Response property:
1. Select the Wait For Response row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Composer Help
419
Voice External Message Blocks
Condition Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Logging Details Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Log Level Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Enable Status Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Composer Help
420
Voice External Message Blocks
Send Info Block
Use the Send Info block, which generates the NGI VXML <send body> tag, for sending any content in the Body of
the SIP INFO. By default, content-type is set to text/plain.
Typically, this can be used in conjunction will CCXML applications.
For example, CCXML use cases that use Composer External Messaging Blocks (such as Send Data, Send Info,
and Send Event), see the Genesys Voice Platform 8.1 CCXML Reference Manual. See the Features chapter,
Dialogs section.
When using either the Send Data or Send Info block, the result on the CCXML side is to create a dialog.user. *
event. The name of the event is set to dialog.<event name>.
For an example, see the Dialog User Event Example in the Send Data block description.
The Send Info block has the following properties:
The Send Info block has no page exceptions.
Name Property
Find this property's details under Common Properties for Callflow Blocks.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Content Property
The Content property is the variable used to collect the content of the sent event.
To select a variable:
1. Select the Content row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list.
Composer Help
421
Voice External Message Blocks
Content Type Property
The Content Type property is the variable used to collect the content type of the sent event.
To select a variable:
1. Select the Content Type row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list.
By default, Content Type is set to text/plain.
Wait For Response Property
The Wait For Response property allows a message to be sent synchronously (when set to true). By default, data is
sent asynchronously for all the Send [xxx] blocks (when this property is set to false).
To assign a value to the Wait For Response property:
1. Select the Wait For Response row in the block's property table.
2. In the Value field, select true or false from the drop-down list.
Condition Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Logging Details Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Log Level Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Enable Status Property
Find this property's details under CommonPropertiesforCallflowBlocks.
Composer Help
422
Reporting Blocks
Reporting Blocks
Reporting Blocks provide interfaces for GVP and Reporting Server whenever the application needs to perform
Voice Application Reporting for IVR actions. There are four Reporting blocks:
• Action Start Block indicates the start of a Voice Application Report (VAR) transaction.
• Action End Block allows the application to indicate the end of a Voice Application Report (VAR) transaction.
• Set Call Data Block allows the application to report custom data for the call.
• Set Call Result Block allows the application to indicate the end of a call.
Composer Help
423
Reporting Blocks
Action Start Block
The Action Start block indicates the start of a Voice Application Report (VAR) transaction. You can specify the
Action Id and Parent Action for the action. Composer generates Subcallflow start and End events whenever a
<SubDialog> (Subcallflow) got executed in the call. Composer-generated VXML code automatically generates the
events. With this feature all the events (Main and Sub callflow events) generated for a call can be found with in a
single umbrella in the Reporting server.
The Action Start block has no page exceptions.
The Action Start block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Action Id Property
Note: The GVP 8 platform provides an extension to the <log> tag that allows application developers to indicate the
start of an IVR Action The Action Id and Parent Action Id properties are used for this purpose. The syntax is as
follows:
<log label="com.genesyslab.var.ActionStart">actionID[|parentID=<PID>]</log>
Composer Help
424
Reporting Blocks
The Action Id property specifies a variable containing the name of the IVR action to report as being started. The
actionID is any valid UTF8 string that does not contain spaces or pipes, and is restricted to a maximum of 64
characters.
1. Select the Action Id row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list.
Parent Action Property
See Note in Action Id property description.
If an IVR action is to be nested inside some other active action, then the parent action’s ID must also be included
(PID). The Parent Action property specifies the variable used for the name of the parent action in which the new
Action has to be contained.
1. Select the Parent Action row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list that contains the identifier for the Parent
Action.
Important! If the Parent Action ID specified does not refer to an action that was already started, the Genesys Voice
Platform Reporting Server will ignore the entire Action Start request.
Note: If the Parent Action ID specified does not refer to an action that was already started, the GVP Reporting
Server will ignore the entire Action Start request.
Condition Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Logging Details Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Log Level Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Composer Help
425
Reporting Blocks
Enable Status Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Composer Help
426
Reporting Blocks
Action End Block
The Action End block allows the application to indicate the end of a Voice Application Report (VAR) transaction.
You can specify the reason, results and notes corresponding to the action. Composer generates Subcallflow start
and End events whenever a <SubDialog> (Subcallflow) got executed in the call. Composer-generated VXML code
automatically generates the events. With this feature all the events (Main and Sub callflow events) generated for a
call can be found with in a single umbrella in the Reporting server.
You are responsible for making sure to provide a valid Action Id name, for an action that was previously started in
the application using the Action Start block.
By default an action end event will be sent by each terminating block of a callflow. This includes the Exit and
Disconnect blocks.
The Action End block has no page exceptions.
The Action End block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Action Id Property
The Action Id property is the variable used in the Action Start block for the action to report as ended. It must be the
same Action Id variable used in the Action Start block.
To select a variable:
1. Select the Action Id row in the block's property table.
2. In the Value field, select one of the available variables from the drop-down list.
Composer Help
427
Reporting Blocks
Notes Property
The Notes property allows you to enter text (up to 4 KB of data) associated with the Action End event. Since
Composer generates <log> labels for the Reporting blocks, text entered here can appear on voice application
reports as described in the Genesys Voice Platform 8.1 User's Guide. See Provisioning GVP.
To enter notes:
1. Click the Notes row in the block's property table.
2. Click the
button to open the Notes dialog box.
3. Type text notes as needed and click OK.
Reason Property
The Reason property allows you to enter text for a reason for ending the action. The Reason field allows up to 4 KB
of data. Note text appears on voice application reports.
To enter reason text:
1. Click the Reason row in the block's property table.
2. Click the dropdown arrow and select the variable that contains the reason text.
Result Property
The Result property contains the result of the action that was just ended.
To assign a value to the Result property:
1. Select the Result row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
UNKNOWN
The action had an unknown result.
SUCCESS
The action completed successfully.
FAILED
The action did not complete successfully (failed).
Composer Help
428
Reporting Blocks
Condition Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Logging Details Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Log Level Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Enable Status Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Composer Help
429
Reporting Blocks
Set Call Data Block
The Set Call Data block allows the application to report custom data for the call. You can select the list of variables
to be reported. The name of the variable is used as the CustomData key. If eight keys are provided, the Reporting
server will reject the data for any new keys received after that.
The Set Call Data block has no page exceptions.
The Set Call Data block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Variables Property
Use the Variables property to create custom variables. Variable content appears on GVP Voice Application reports.
For more information, see Genesys Voice Platform 8.1 User's Guide, Monitoring GVP chapter, Voice Application
Reports section, VAR Call Browser Report sample. To create custom variables:
1. Click the Variables row in the block's property table.
2. Click under Value to add an entry to define application variables.
3. In the Application Variables dialog box, click Add.
4. In the Variable Name field, accept the default name or change it.
5. In the Value field, select a variable from the drop-down list.
6. In the Description field, type a description for this variable.
7. Click Add again to enter another parameter, or click OK to finish.
Delete Button
To delete a custom variable:
1. Select an entry from the list.
Composer Help
430
Reporting Blocks
2. Click Delete.
Note: In version 8.1.300.xx, ignore the Restore System Variables Default Values button.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
431
Reporting Blocks
Set Call Result Block
The Set Call Result block allows the application to indicate the end of a call. You can specify the reason, results
and notes corresponding to the call result. In addition to tagging calls for Voice Application Reporting (VAR), you
can also use this block for Service Quality Analysis (SQA) call status (success, failure) reporting. For information on
SQA, see Genesys Voice Platform 8.1 Deployment Guide and Genesys Voice Platform 8.1 User's Guide.
The Set Call Result block has the following properties:
The Set Call Result block has no page exceptions.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Can be used for both callflow and workflow blocks to add comments.
Notes Property
The Notes property allows you to enter text (up to 4 KB of data) associated with the end of a call. Since Composer
generates <log> labels for the Reporting blocks, text entered here can appear on voice application reports as
described in the Genesys Voice Platform 8.1 User's Guide. See Provisioning GVP.
To enter notes:
1. Click the Notes row in the block's property table.
2. Click the
button to open the Notes dialog box.
3. Type text notes as needed and click OK.
Reason Property
The Reason property allows you to enter text for a reason for ending the call (maximum length of 256 characters).
To enter reason text:
1. Click the Reason row in the block's property table.
Composer Help
432
Reporting Blocks
2. Click the dropdown arrow and select the variable that contains the reason text.
Result Property
The Result property contains the result of the call that was just ended.
To assign a value to the Result property:
1. Select the Result row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
UNKNOWN
SUCCESS
FAILED
UNKNOWN
The call had an unknown result.
SUCCESS
The call completed successfully.
FAILED
The call did not complete successfully (failed).
This property can be used for reporting both VAR metrics and SQA services as described above. Refer to Genesys
Voice Portal documentation for information usage of this field for VAR (<log> label com.genesyslab.var.CallResult)
and SQA (<log>label com.genesyslab.quality.failure).
Notes:
• Composer will not log SUCCESS and UNKNOWN call results, already available for VAR, to SQA.
• MCP will still log a call as a failure if it fails to meet one of the thresholds, even if the application never explicitly calls
the <log> tag to indicate SQA failure.
Condition Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Composer Help
433
Reporting Blocks
Logging Details Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Log Level Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Enable Status Property
Find this property's details under CommonPropertiesforCallflowBlocks or CommonPropertiesforWorkflowBlocks.
Composer Help
434
Genesys Voice Platform (GVP) Blocks
Genesys Voice Platform (GVP) Blocks
Starting with Composer 8.1.430.03, Composer supplies the following GVP block:
• IVR Recording Block
Composer Help
435
Genesys Voice Platform (GVP) Blocks
IVR Recording Block
Starting with 8.1.430.03 Composer supplies an IVR Recording block that allows you to control and record an IVR
application from a Composer IVR self-service application. You can use this block to both record calls and to control
the recording process by using additional blocks with START/STOP/PAUSE/RESUME operations for recording.
Once the application executes, recording becomes available via Geneys Interaction Recording (GIR).
Prerequisites
The IVR Recording block requires the following Genesys components:
• SIP Server version 8.1.102.39
• GVP Resource Manager version 8.5.170.38
• GVP Media Control Platform version 8.5.170.71
This block has the following properties:
Name Property
Find this property's details under Common Properties for Callflow Blocks,
Block Notes Property
Find this property's details under Common Properties for Callflow Blocks.
Action Property
Record action to perform. Select one of the following: start, stop, pause, resume, or a variable.
Additional Commands Property
Use for additional commands for GIR. Click the open the Additional Commands dialog box. Select Add to open a
dialog box where you can enter one or more key-value pairs using a literal or variable. If applicable, check the
Composer Help
436
Genesys Voice Platform (GVP) Blocks
Value is numeric check box. For information on these commands, refer to the Genesys Interaction Recording
documentation.
Exceptions Property
Find general information about this property under Common Properties for Callflow Blocks. For more specific
information on these events, see the GVP 8.1 Legacy Genesys VoiceXML 2.1 Reference Manual.
The IVR Recording block has the following exception events:
• error
• error.semantic
• error.noresource.recording
Condition Property
Find this property's details under Common Properties for Callflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks.
Partitions Property
Note: This property requires Media Control Platform version 8.5.170.71+.
Use to set different partitions for each IVR Recording segment. Select the variable that contains the list of partitions.
GIR provides access control for recording files to allow any recording files be only accessible for certain users in
GIR. To enforce access control, each recording file is provided with a set of partitions. You can individually apply a
partition for the IVR recording segments using the Partitions property. For example, Partitions = sales,support
can be set to a recording segment using the IVR Recording block, Once this is applied, users from sales and
support will only be able to access these particular recordings in GIR.
For more information, see the Genesys Interaction Recording Solution Guide, Recording Methods.
Composer Help
437
Genesys Voice Platform (GVP) Blocks
Since GVP as an IVR does not support dynamic recording, to set the partition for an IVR segment, use
GRECORD_PARTITIONS attached data and use full time recording for the IVR. Use dynamic recording for
recording the agent segments.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Note: The IVR Recording block does not support Debugger calls.
Composer Help
438
Using Voice Blocks
Using Voice Blocks
This section describes:
• Common Properties for Callflow Blocks
• Working with Grammar Builder
• Working with CTI Applications
• Working with Prompts
• Working with Database Blocks
• User Data
• Connection Pooling
• Single Session Treatments
Composer Help
439
Using Voice Blocks
Working with Grammar Builder
Grammar Builder provides a solution for supplying simple grammars, without requiring GRXML expertise. This
editor provides a hierarchical view of certain grammar concepts in a simple, abstract way. Each level of this tree
contains properties which affect all child members. Following is a brief description of the key concepts of the
Grammar Builder model as well their relationship with GRXML.
Note: A Grammar built with the Grammar Builder is not a GRXML file.
Grammar
The grammar is the root object of the tree. It serves to provide an implicit description of the intended use of a
grammar. For example, a grammar which would be used for a bank customer could be called bankmenuinput. The
selection of a grammar name is determined by the file name or the related gbuilder file, and its setting influences
the file name(s) of any exported GRXML data.
Within the grammar object are properties for the setting of languages. These languages, or locales, indicate support
for a particular language. For each locale that is added to a grammar, a distinct GRXML file will be created
specifically to support that language. DTMF, or touch-tone input, is considered a language even though it is not
spoken.
Rule
Every grammar must contain at least one rule, but may contain many. Rules provide a grouping for a spoken (or
DTMF) items. Continuing the bank customer scenario, we could have rules for yes/no responses, another for menu
options and perhaps another for branch cities. Rules are the product that is referenced in a voice application.
At a point in an application where we wish to retrieve the branch city, we must refer to that grammar’s rule. If an
application designer does not specify a rule and instead only specifies the grammar file, the default rule is used.
Additionally, a rule may be hidden from outside applications by declaring it as private. Usually this is for more
sophisticated grammar cross-referencing, which is not currently supported in the more elementary Grammar
Builder.
Keywords
Within a rule are specific keywords that will be used to add intelligence to an end application. Keywords become the
value which can be identified within the application for use in branching or other application constructs. However,
this keyword is independent of what may actually be spoken and is instead an internal identifier.
To bridge the gap between what a caller says or presses on their keypad, locale-specific synonyms are defined.
Remember that the languages supported are defined at the grammar level. It is at this point that those defined
Composer Help
440
Using Voice Blocks
languages come into play. Each keyword will have a list of words (synonyms) which relate to the keyword for a
given language.
For example, assuming as part of our yes/no rule, we have a keyword for yes. This keyword could contain the word
yes for English, 1 for DTMF and oui for French. Regardless of which locale ends up being used in the running
application, yes (the keyword identifier) will be returned.
Working with Grammars will guide you through the process of creating a simple grammar, using a user color
selection problem as the example to model.
Using the Grammar Builder
Let's create a simple grammar for use with a project and the Grammar Menu block. Our example will be a user
color selection problem. You will perform the following steps:
1. Create a new grammar builder file with initial settings.
2. Add keywords and synonyms for a rule.
3. Save the grammar builder file.
4. Export the grammar builder file to standard GRXML format.
Composer provides a cheat sheet for building a simple grammar file:
• Select Help > Cheat Sheets > Composer > Building Voice Applications > Creating a simple grammar.
Creating a New Grammar Builder File With Initial Settings
The first step is to create a new grammar builder file and provide its initial settings. Follow these steps:
1. Select File > New > Other.
2. From the New dialog box, expand the Composer folder, then expand the Grammars folder.
3. Select Grammar builder file and click Next to continue.
4. In the Container field of the wizard dialog box, click Browse to select a project-specific folder to contain the new
.gbuilder file. Genesys recommends <voiceprojectname>/Resources/Grammars for the location.
5. Set the file name to use for this grammar. File names should give an indication of the context this grammar will be
used in. For example, type colors.gbuilder in the File name field.
Note: The Grammar Menu block does not pick up changes automatically if you change your Gbuilder file. To
synchronize the block with the latest changes, click on the Gbuilder File property of the Grammar Menu block. In
the popup make sure that the correct Gbuilder file and RuleID are selected. Click OK to close the dialog. Your
diagram will now reflect any menu options changes made in the Gbuilder file.
6. Next, set the initial default rule. Rules contain items which form a category. All grammar builder files must have at least
one rule. Since our example grammar only deals with one such categorization, type Colors in the Initial Default
Rule field.
Composer Help
441
Using Voice Blocks
7. Locales are languages that this grammar will support. By default, English and digit input (DTMF) are selected in the
Initial locale(s) field. If you knew you would need to support additional languages for the grammar, you would select
the appropriate check box(es). For our example, the default selections are adequate.
Note: Grammar Builder treats DTMF as a separate language (locale), even though technically it is not categorized
as such.
8. After making the selections described above, click Finish.
The file is added to the selected project (as you can see in the Project Explorer), and the Grammar Builder opens
as shown in the image below.
Adding Keywords and Synonyms for a Rule
Grammar builder files are created with a default rule. The next step is to define keywords for this rule. Each rule can
have any number of input-agnostic keywords. These keywords will be returned from either the speech or digit
processor for use in your callflow.
By default, a keyword is not usable in an application. This is because multiple languages may use different words/
sounds for your keyword. In our example, red may be an appropriate English pronunciation, but in Spanish this
Composer Help
442
Using Voice Blocks
would not be true. Because of this, each configured locale must provide accepted input for the keyword. These
inputs are called synonyms. Therefore, keywords consist of a logical identifier and a list of locale-specific synonyms.
Once you have defined keywords and synonyms for the default rule, you can then create additional rules and define
keywords and synonyms for those rules as well.
To add a new keyword:
1. Select the Colors (default) rule in the Overall Structure tree.
• The Rule Properties area shows the Public Visibility and Default Rule settings for the selected Rule ID.
• Default Rule. This is selected only for the rule that has been set as the default (as is the Colors rule in
this example).
• Note: Not all aspects of Composer allow for specific rule targeting within grammar files (grxml). As such,
it is highly recommended that you specify a default rule. This rule will be used by default when a
reference to the grammar exists that does not target a specific rule. Considering that a default rule (e.g.,
root) is not mandatory in GRXML, no warning is given when one is not specified
• Public Visibility. If selected, this indicates that this rule can be referenced by an external grammar (in a
ruleref element in the grammar making the reference). A public rule can always be activated for
recognition. If not selected, the rule is private, which indicates that the rule is visible only within its
containing grammar. A private rule can be referenced by an external grammar if the rule is declared as
the root rule of its containing grammar.
2. Click the
(Add) button.
3. In the Add new keyword dialog box, type a name for this keyword, which is normally an instance of the category that
the rule defines. In our example, type Red in the Keyword ID field and click OK.
4. You can repeat the steps above to add more keywords to this rule.
To add a new synonym:
1. Select a keyword from the Overall Structure tree. In our example, select Red.
The Synonyms area allows you to add synonyms for each of the locales you have defined (each locale is a tab at
the bottom of the synonyms table). Note in our example that the window has both English - United States and
DTMF as bottom tabs. This allows you to switch the synonym context for the selected keyword.
1. With the English - United States tab selected, click Add ID as Synonym. This button allows you to add a synonym that
is identical to the keyword, thus allowing red to be spoken in English and associated with the keyword Red.
2. You may at this time add other values, such as Crimson for example, which will also be accepted as Red.
3. Select the DTMF tab. To associate the digit 1 with the keyword Red, type 1 in the Digits field and click the Add button.
4. You can repeat the steps above to add more synonyms to this keyword.
Note: If you are using locales representing other languages, the synonyms you create for each locale would
represent acceptable values for the keyword in that language. In our example, if you also defined Spanish and
French locales, you could create a synonym rojo for the Red keyword in the Spanish locale, and a synonym rouge
for the Red keyword in the French locale.
Composer Help
443
Using Voice Blocks
Saving the Grammar Builder File
When you have finished building your grammar builder file, or periodically during the course of building the file, be
sure to save the changes you make to the file.
5. To save the file, click
file name and location.
(Save), or to save the file under a different name, click
(Save As) and provide a new
Exporting the Grammar to GRXML Format
Because the Grammar Builder saves your grammar to a non-standard GRXML format (denoted with a .gbuilder
extension on the file name), you will want to export the grammar to the standard GXML format as follows:
1. Click
(Export) , located at the top-right corner of the Grammar Builder editor.
2. If prompted to save, click Yes.
You will see a message indicating the file has been successfully exported. The exported GRXML file names are
displayed in the success window, and the .grxml file will display in the appropriate locale folder(s) in the Project
Explorer under <voiceprojectname>/Resources/Grammars. It's important to note that DTMF is considered a
locale for the purpose of exportation. As such, an export result for a GBuilder resource with English and DTMF
would be placed in <voiceprojectname>/Resources/Grammars/en-US and
<voiceprojectname>/Resources/Grammars/DTMF directories, respectively. These files can now be
edited in the GRXML Editor.
Locales and Grammar Builder
When using the Grammar Builder, you specify locales, which are the languages that a grammar file will support.
The Grammar builder wizard uses the active locales for the Composer Project.
See Locales in CommonBlocks & Functionality.
Dynamic Grammars
Dynamic grammars are used for automated speech recognition (ASR). They are generated "on-the-fly" based on
information dynamically pulled out from data sources such as databases, web services, or the file system. Contrast
this to using a static grammar file whose content is fixed. The ASR engine matches the user utterance with the
grammar. Returned values are then passed back to the application based on any matches in the grammar.
There are several ways to include dynamic grammars in voice dialogs:
• Use a dynamic VXML page template that creates the dynamic grammar and insert it in-line into the VXML page. Using
a dynamic VXML page will provide flexibility in terms of the data source used to generate the grammar.
Composer Help
444
Using Voice Blocks
• If data is being retrieved from a database, using the DB Input block may be another alternative. It generates a
grammar based on data retrieved from a database using the DB Data block. It can also generate a grammar based on
contents of a JSON array that may have been retrieved from alternate data sources e.g., a Web Service.
Composer Help
445
Using Voice Blocks
Working with CTI Applications
Composer provides CTI blocks for two CTI scenarios supported by GVP:
• SIP Server (SIPS) scenario, which uses the Genesys SIP Server component to gain access to CTI functionality.
• CTI Connector (CTIC) scenario, which uses GVP’s CTI Connector component to access CTI functionality provided by
Genesys Framework.
These two scenarios do not provide identical capabilities and key differences are highlighted later in these topics.
Composer provides four CTI blocks for accessing CTI functions. It generates VXML for each of these blocks that
can work in either CTI scenario (SIPS or CTIC), and does not ask the user to choose between the SIPS or CTIC
scenarios at design time. The decision to use CTIC or SIPS is made at runtime based on the X-Genesys headers
received from GVP’s Resource Manager. Therefore, the Composer user interface does not need to expose a
Project-level preference for specifying the CTI scenario. Note: The CTI Connector provides different capabilities
depending on the configuration in which other Genesys components like the IServer are deployed. For more details,
please refer to the GVP documentation. Also see GVP Debugging Limitations.
Design Paradigms for CTI Applications
There are two design paradigms for building CTI applications with GVP in which Composer can be used:
• Standard VXML Applications
• URS-Centric Applications
These paradigms differ in the extent to which the VXML application is involved in performing call control. Standard
VXML Applications In this paradigm, the VXML application gets invoked first and can go through VXML
interactions with the caller before using the <transfer> tag to transfer the call to another party such as queuing for
an agent. At this point, the control of the call is passed to the SIP Server or CTI Connector while waiting for an
agent. During this time, SIP Server or CTI Connector may invoke additional call treatments on GVP like playing
music or invoking other applications. URS-Centric Applications In this paradigm, the VXML application is always
invoked as a treatment by Genesys URS. The incoming call is controlled by Genesys URS and a strategy retains
full control of the call. The strategy invokes specific treatments on GVP IVR as a media server to play prompts, play
music, collect user input or execute a VXML application. In this paradigm, the VXML application does not use tags
like <transfer> nor does any other kind of call control. Those decisions are left to the strategy. The VXML
application returns user input collected during the call back to the strategy and lets the strategy make all call control
decisions. Composer can be used to write VXML applications following either of the above paradigms.
Typical CTI Callflow
Before you start building a typical CTI application, the following information is required:
• The Genesys Virtual Route Point destination address. This is the address/location where the Genesys strategy is
present (an integer number--for example, 5001).
Composer Help
446
Using Voice Blocks
• Strategy application on the Framework side (IRD) to find and transfers the call to an agent.
The following describes the interaction flow of this callflow:
1. GVP starts executing the generated VoiceXML application script.
2. The caller hears the Welcome prompt.
3. The caller is requested to enter the account details.
4. If the caller does not enter the required details within the maximum time frame provided, the caller is asked to retry.
5. The application issues a route request to the route DN configured in the Route Request block. (This occurs via the
<transfer> tag, supported in both CTIC and SIP Server scenarios.)
6. The caller-entered data is sent as UserData to the routed DN, and the called strategy does the knowledge based
transfer to the available agent based on the User Data .
7. This application ends after the Route Request has been issued.
8. The called strategy can play Voice treatments to the caller until the next available agent is available.
9. Finally, the caller will be transferred to the Agent.
Note: The Route Request block can be configured in various Transfer modes (Bridge / Consultation) to gain back
the control of the callflow after the called strategy returns back the execution. Please check the Route Request topic
block for more details.
Composer Help
447
Using Voice Blocks
CTI Scenarios
There are feature differences between the SIPS and CTIC scenarios. The following table gives a summary of the
CTI blocks, and for each CTI block it lists the differences in behavior for the two CTI scenarios.
CTI Block Name
Supports CTIC Case?
Supports SIPS Case?
Comments
Supported operations in
each scenario:
CTIC:
• PUT
• GET
• DELETE
• DELETEALL
• REPLACE
Interaction Data Block
Yes
Yes
SIPS:
• PUT
• GET
Types of interaction data
supported: CTIC:
• USERDATA
SIPS:
• USERDATA
Get access number block
can only be used in the
CTIC scenario.
Get Access Number Block
Yes
No
Types of interaction data
supported: CTIC:
• USERDATA
• EXTENSIONDATA
Statistics Block
Yes
No
Statistics block can only be
used in the CTIC scenario.
Types of interaction data
supported:
CTIC:
Route Request Block
Yes
Yes
• USERDATA
• EXTENSIONDATA
SIPS:
Composer Help
448
Using Voice Blocks
• USERDATA
Types of transfers supported:
CTIC:
• Blind
• Bridge
SIPS:
• Consultation
• Blind
• bridge
In case a CTI block or feature is used in a CTI scenario in which it is not supported, appropriate exceptions will be
thrown at runtime indicating that the feature is not supported. The table below gives a list of all exceptions that can
be thrown by CTI blocks and other possible CTI-related exceptions that can be thrown if errors are encountered at
runtime.
Block(s)
Exception
Error Message
Interaction Data Block
Description
Missing <block name> key
error.com.genesyslab.composer.invalidkey
<key name>
This is the event error for
handling an invalid key
name.
error.com.genesyslab.composer.operationtimedout
Operation timed out.
This exception will be
thrown when a <receive>
operation, executed in the
context of a CTIC specific
operation, times out.
<Error string returned by
error.com.genesyslab.composer.receiveerror
CTIC>
If the <receive> fails and
an error is reported by
CTIC, this exception will be
thrown.
Interaction Data Block
Delete operation not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
userdata DELETE in the
CTI using SIPS scenario.
Interaction Data Block
DeleteAll operation not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
userdata DELETEALL in
the CTI using SIPS
scenario.
Interaction Data Block
Replace operation not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
userdata REPLACE in the
CTI using SIPS scenario.
Get Access Number Block
AccessNumGet operation
error.com.genesyslab.composer.unsupported
not supported in case of
CTI using SIPServer.
If the user wants to do a
AccessNumGet in the CTI
using SIPS scenario.
Get Access Number Block,
Statistics Block
Interaction Data Block
Get Access Number Block
Statistics Block, Route Request
Block
Interaction Data Block
Get Access Number Block
Statistics Block Route Request
Block
Composer Help
449
Using Voice Blocks
Statistics Block
Statistics block not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using SIPServer.
If the user wants to do a
PeekStatReq or
GetStatReq in the CTI
using SIPS scenario.
Route Request Block
Consultation transfer is not
error.com.genesyslab.composer.unsupported
supported in case of CTI
using CTIConnector.
If user sets Transfer type
to consultation in case of
CTI using SIPS.
Script ID Usage in the GVP 8 Environment
In Genesys VoiceXML 2.1, ScriptId refers to the script identifier, as generated by the CTI Connector, to handle call
treatments. The use of ScriptId is specific to GVP 7.x and was mandatory for treatments. Since the GVP 7.x design
is "IVR-centric," the treatment would be invoked on the same VXML session. Things are a bit different with GVP 8.x
and the Next Generation Interpreter (NGI) where APP_URI is used instead of ScriptId and the treatments are
executed on different VXML sessions. GVP 8 and NGI In GVP 8.x, request for treatment execution comes in as a
NETANN request with the APP_URI being passed in as a VoiceXML parameter. GVP executes the requested page
to kick off the treatment. Unlike the GVP 7.x environment, treatments get invoked as separate VXML sessions and
terminated at the end of the treatment execution. Hence, ScriptId switching is no longer needed here, unless an
application wants to do branching based on ScriptId.
• Note: Composer provides support for both SIPS and CTIC scenarios for achieving the CTI functionality. However,
SIPS may not support passing additional request-uri parameters like ScriptId, therefore, this option is limited only to
CTIC scenarios.
Please refer to GVP 8.x VXML Help under Sample Voice XML Applications > CTI Interactions > Treatments for
more details on this topic.
Accessing ScriptId in Composer
Use if you want your application to do ScriptId-based switching like GVP 7.x. CTIC Scenario (IRD strategy +
Composer Callflow)
1. Use the APP_ID property in IRD's Play Application block.
2. Define a new Input type variable named ScriptId in the Entry block of your callflow to collect the ScriptId.
Composer Workflow + Composer Callflow)
1. On the VXML callflow side, define a new Input type variable named ScriptId in the Entry block to collect the APP_ID
(i.e., ScriptId) passed from the workflow.
2. On the SCXML workflow side, use the Play Application block to invoke the callflow created using step#1. Then do an
auto-synchronize for the parameters, and specify the ScriptId value.
3. The ScriptId (i.e., APP_ID) passed from the workflow will be automatically collected on the VXML side from the
session.connection.protocol.sip.requesturi array.
SIPS Scenario
Composer Help
450
Using Voice Blocks
1. SIPS may not support passing additional request-uri parameters. Pass ScriptId as attached data on the strategy side
(If using IRD) or on the SCXML side (If using Composer workflows).
2. Define a new Input type variable named ScriptId in the Entry block to collect the ScriptId.
3. The ScriptId (i.e., APP_ID) passed from the strategy will be automatically collected on the VXML side from the
session.com.genesyslab.userdata array.
Composer Help
451
Using Voice Blocks
Working with Prompts
There is both a Prompts Manager perspective and a Prompts Manager perspective. The Prompts Manager provides
the ability to quickly review all prompts in a Composer Project from a central place. It displays the relevant
information about all prompts in all callflows present in your workspace, one project at a time. It displays prompt
item text, associated audio file(s) and allows you to play prompt resource files directly from the Prompts Manager
view. The Prompts Manager also enables you to tweak your prompts by rearranging prompt items, changing prompt
item text, and recording new audio files using microphone input and associating them with prompts in your Projects.
It provides the ability to quickly jump to a specific prompt block in the callflow diagram with a simple right-click so
that other changes can be made to the prompt. Prompt Manager works in conjunction with the prompts properties
popup dialog.
Opening the Prompts Manager
To open the Prompts Manager perspective:
• Select Window > Open Perspective > Other > Prompts Manager.
• Or select the Prompts Manager Perspective
toolbar button.
To open the Prompts Manager view:
• Select Window > Show View > Prompts Manager.
• For an additional Prompts Manager setting, see the figure in topic Project Properties dialog box. Expand Prompts
Manager.
Composer Help
452
Using Voice Blocks
Selecting a Composer Project
To select a Composer Project for which to manage prompts, the Prompts Manager view:
• Select a project from the Composer Project drop-down list.
Selecting a Language Resource
• Select a Language Resource. If not using en-US, see the special note on Non-US Locales.
The Prompts Manager displays all the prompt-related blocks for all the callflows in the selected Project.
Notes
• The Prompts Manager will not work with non-Composer projects (such as hand-coded applications).
• Note the Language Resource dropdown selection box. The prompt audio resource is located in the appropriate
language resource folder location (for example:/Resources/Prompts/<locale>/audioResourceFile.vox.
• Starting with 8.0.2, a Composer Project upgrade sets the default Project locale to en-US. If other than en-US, rightclick the Composer Project in the Project Explorer, and select Properties > Locales to set the default and active
locales.
• Use only a 32-bit Eclipse environment to play audio files from the Prompts Manager view. If you are using a 64-bit
version Eclipse environment, playing audio throws the following error: java.lang.UnsatisfiedLinkError:
.\configuration\org.eclipse.osgi\bundles\470\1\.cp\AFUtil.dll: Can't load IA 32-bit
.dll on a 64-bit platform.
Composer Help
453
Using Voice Blocks
Columns in the Prompts Manager View
A prompt item row in the Prompts Manager view displays the following column details:
• Prompts -- A tree hierarchy consisting of the following elements; Root elements, studio diagram callflow/sub-callflow
file name. Studio diagram elements may have diagram block elements. These diagram block elements may have
prompt/retry prompt item elements.
• Type -- The type of prompt item (audio resource/value/variable)
• Prompt Item Text -- Any associated text with the prompt item.
• Audio File -- The relative path of the audio file associated with this prompt item.
• Time Stamp -- The Date/Time stamp when the audio file was created or recorded. This helps in identifying the newer/
older prompts.
• Instructions -- If additional item specific information needs to be given, such as a certain word needs to be
emphasized when recording at the recording studio.
• Notes -- Any notes that you would like to associate with the prompt item for later reference.
Non-US Locales
By default, Composer provides prompts audio resources for the en-US locale. The supplied
PlayBuiltinType.js under Resources/Prompts in the Project Explorer defines a global variable called
promptBaseUrl with the value en-US. When using a different locale in a callflow (other than en-US in the
Language Resource field in Prompts Manager), you must provide the associated audio files and
PlayBuiltinType.js. Adjust the path with the associated prompt resource locale folder path.
Reviewing and Managing Prompts
Once you have laid out your diagram and wish to review the flow of the application, you can use the Prompts
Manager to do the review. It is useful to have the callflow and Prompts Manager view open together so that the flow
of the application can be traced using the callflow while reviewing prompts using the Prompts Manager. Select the
Composer Project(s) containing prompts you wish to manage. You can review and manage your prompts as
follows:
1. Expand a Prompt block in the Prompts column of the Prompts Manager view to display all prompts associated with
that block.
2. Select a prompt row. The Prompts Manager view displays detailed information about the prompt.
3. You can view prompt item text in the Prompts Manager.
• For prompts that have an associated audio file, click the Play icon
hear the audio file.
• Click the Stop icon
Composer Help
in the Prompts Manager view to
to stop playing the audio file.
454
Using Voice Blocks
Note: To play back VOX audio files in their correct encoding (U-Law/A-Law), you may need to set the encoding
properties in the Composer Project settings. To change the settings, go to the Project Explorer, right-click the
Composer Project folder, and select Properties. Select the Prompts Management section and set the Encoding
property accordingly.
4. To modify the sequential order of the prompt items within a block, select a prompt item element row and click the Up or
Down icon.
in the Prompts Manager view.
5. To locate the diagram block in the studio diagram callflow that is associated with a selected row, right-click a prompt
row and select Display in callflow from the context menu. If the callflow (or studio diagram) is not currently open, it will
be opened in the editor and the selected block will be highlighted with a blue outline.
6. To modify a value (for example, the prompt item name, the prompt item text, and so on) from within the Prompts
Manager view, double-click the table cell, type a new value, and press Enter. Certain table cell values may not be
modified.(for example, callflow diagram name, prompt type, and so on).
Supported Audio File Formats Audio files are encoded and outputted in various audio file formats. The following
audio file formats are recommended and supported for playback and recording within Prompts Manager:
File Extension
Sample Rate
Sample Size
Bit rate
(Bandwidth)
File Format
Encoding
.vox
8000 Hz
8-bit
64 bits/sec
Raw audio
(mono)
u-law
.vox
8000 Hz
8-bit
64 bits/sec
Raw audio
(mono)
a-law
.wav
8000 Hz
8-bit
64 bits/sec
Audio with .wav
header (mono)
PCM
Refer to the VoiceXML 2.1 Reference Help on the Genesys Voice Platform Wiki for additional formats that GVP
supports. Those additional formats can be played back and recorded using third party tools outside of Composer.
Recording Prompts
The Prompts Manager view provides a button to launch a recorder/player that can record and play back a single
prompt item’s audio file. The newly-recorded file will replace any existing audio file associated with the highlighted
prompt item. Notes:
• Related prompt audio settings are located in the Composer Project Settings. In the Project Explorer, right-click the
Composer Project folder, and select Properties. Select the Prompts Management section for prompt audio settings.
• To record a prompt item using Prompts Manager, the prompt item must be of type Resource in the Prompts Manager
view. If you do not want to specify an audio resource at this time or wish to record your own resource prompt using
the Prompts Manager, you may instead define a value in the Alternate Text field shown below.
Composer Help
455
Using Voice Blocks
Important
Please note for recording prompts that are of type Value to interpret-as "Text," you will need to
change the prompt type to Resource. Supply the prompt text value in the Alternate Text field for
the Resource prompt type.
To record a prompt from within the Prompts Manager view:
1. Select a callflow within a Project.
2. Open the Prompts Manager (Window > Show View > Prompts Manager).
3. Select an existing prompt row of type Resource.
4. Click the Record icon
Composer Help
to open the Prompts Manager - Recorder dialog box as shown below:
456
Using Voice Blocks
The Prompts Manager - Recorder dialog box assists in the recording, playback, and storing of the audio file.
1. Type any notes for this prompt in the Notes field.
2. Type an alternate text string in the Alternate Text field. This text is used to generate audio using #Text-to-Speech in
place of the audio file should the audio file not be available at runtime.
3. Select the default recording Location, or click Browse to navigate to an alternate location. Note: Genesys
recommends that you keep your language specific audio files in the/Resources/Prompts/<language-code> folder.
4. Type a recording file name or keep the current name.
5. If the audio recording format displayed in the Recorder is not the format you wish to use, click Audio Recording
Format to open the Properties dialog box for this Composer Project, from which you can change the audio format to
WAV or VOX. You can also specify the encoding as ALAW or MULAW.
6. Click OK in the Properties dialog box to accept the new audio format setting for this Composer Project.
7. Click Clear if you want to clear the current resource file and create a new one.
Composer Help
457
Using Voice Blocks
8. Click the Record icon
already be set properly.
9. Click the Stop icon
10. Click the Play icon
to record your audio prompt. A microphone should be connected and volume levels should
to stop the recording.
to play back the new audio prompt. You can re-record if necessary.
11. Click OK when you are finished to close the Prompts Manager - Recorder dialog box. At this point, Prompt Manager
will save any changes you have made. If you click Cancel, no changes are saved to the project.
Exporting a Prompt Listing
The Composer Prompts Manager provides the ability to export a prompt listing of all prompts in a Composer Project
along with the attributes shown in Prompts Manager, such as instructions and notes. This facility is useful if you
need to send your prompts out for professional recording and want to include instructions and text to be recorded
along with prompt names. To export a prompt listing from within the Prompts Manager view:
1. Click the Export Composer Project Prompts icon
in the Prompts Manager view, or
2. From the File menu, select Export. Expand Composer and select Export Prompt Listing, or
3. Right-click with any prompt or Prompt block selected, and select Export Composer Project Prompts from the context
menu, to open the Export dialog box.
4. Select the Composer Project whose prompts you wish to export from the drop-down list.
5. Select the file format for your exported data from the drop-down list. You may select either xml or csv format.
6. Click Browse to navigate to a destination location to hold your prompt export file. The exported file will have the name:
<voiceprojectname>.xml or <voiceprojectname>.csv.
7. Click Finish to complete the export request.
XML Format Description Below is an example snippet from a prompt listing export in XML format: <prompts
project="JavaComposerProject_Voice_Business"> <prompt callflow="Main"
block="WelcomePrompt" name="WelcomePrompt_Prompt1" type="Resource" interpretas="Audio" value="Resources/Prompts/en-US/Brand_A.vox" format="" alternateText=""
instructions="" notes="" /> … </prompts>
XML Tag
Attribute Name
Description
<prompt>
project
The Composer project that is being
exported.
<prompt>
callflow
The name of the callflow diagram
where the prompt resides.
<prompt>
block
The name of the diagram block
where the prompt resides.
<prompt>
name
The name of the prompt item.
<prompt>
type
The type of prompt, such as Value,
Resource, or Variable.
Composer Help
458
Using Voice Blocks
<prompt>
interpret-as
The interpretation of the prompt
value.
<prompt>
value
The value of the prompt item.
<prompt>
format
If applicable, the format of the value.
Used for interpret-as, Date or Time.
For example, 24 Hour or 12 Hour.
alternatetext
The alternate text for the prompt.
Used for an invalid value. For
example, if an audio resource does
not exist or the variable data is
invalid.
instructions
Text for additional or specific
information instructions. For example,
if a certain word needs to be
emphasized when recording at the
recording studio.
notes
Any further notes from the user. For
example, identify if an associated
audio file was recorded by the
Prompts Manager or if the audio file
was from a recording studio. Shows
the source, which will be set by the
user (Recorded/Imported/Unknown).
<prompt>
<prompt>
<prompt>
CSV Format Description The CSV format separates each prompt-related value by commas. The ordered values
represents the following:
1. Callflow
2. Block Name
3. Prompt Type
4. Interpret-As
5. Prompt Name
6. Value
7. Format
8. Alternate Text
9. Instructions
10. Notes
The following is a snippet from the prompt listing Export in CSV format:
Main,WelcomePrompt,Resource,Audio,WelcomePrompt_Prompt1,"Resources/Prompts/en-US/
Brand_A.vox","",,"",""
Composer Help
459
Using Voice Blocks
Prompt Listing Usage For a Recording Studio
A recording studio may use the details in the sample exported prompt listing below when preparing an audio
recording for a prompt item. This transcript-like format is intended to assist with producing professional sounding
recordings. The five prompt items are in sequenced order to provide a sense of tone in relation to where the
recorded message is at the beginning/middle/end of the overall message. The recorder:
• Uses the block name attribute to determine which set of prompt items belong together.. For example, the last five
prompt items are from the same Menu1 prompt block.
• Is typically interested in prompts where type="Resource" and interpret-as="Audio", as these are the audio resources
that are to be professionally replaced.
• Uses the value from the alternateText attribute to determine what should be said for the recording.
• Uses the instructions attribute for additional details from the developer, such as instructions to emphasize a certain
word in the prompt message.
Sample Exported Prompt Listing
<prompts project="JavaComposerProject_Voice_Business"> <prompt callflow="CompanyABC"
block="Prompt1" name="Prompt1_PromptMsg1" type="Resource" interpret-as="Audio"
value="Resources/Prompts/en-US/Welcome.vox " format="" alternateText="Welcome to A B
C bank." instructions="" notes="Prompts Manager recorded file." /> <prompt
callflow="CompanyABC" block="Menu1" name="Menu1_PromptMsg1" type="Resource"
interpret-as="Audio" value="Resources/Prompts/en-US/MainMenu_A.vox" format=""
alternateText="Main menu." instructions="" notes="Default Composer audio file." />
<prompt callflow="CompanyABC" block="Menu1" name="Menu1_PromptMsg2" type="Resource"
interpret-as="Audio" value="" format="" alternateText="To check your balance press
one or say check balance." instructions="Place emphasis on 'check balance'" notes=""
/> <prompt callflow="CompanyABC" block="Menu1" name="Menu1_PromptMsg3"
type="Resource" interpret-as="Audio" value="" format="" alternateText="To make a bank
to bank transfer press two or say transfer." instructions="Place emphasis on the word
'transfer'" notes="" /> <prompt callflow="CompanyABC" block="Menu1"
name="Menu1_PromptMsg4" type="Resource" interpret-as="Audio" value="" format=""
alternateText="To repeat these options press five or say repeat." instructions="Place
emphasis on the word 'repeat'" notes="" /> <prompt callflow="CompanyABC"
block="Menu1" name="Menu1_PromptMsg5" Naming For ease of importing the new audio recordings into
Composer, Genesys recommends making the name the same as the attribute value of the respective prompt entry.
For example, MainMenu_A.vox in the below snippet. This avoids having to rename the files when they are
imported into Composer as described in the Importing Prompt Resources topic. <prompt
callflow="CompanyABC" block="Menu1" name="Menu1_PromptMsg1" type="Resource"
interpret-as="Audio" value="Resources/Prompts/en-US/MainMenu_A.vox" format=""
alternateText="Main menu." instructions="" notes="Default Composer audio file." />
Composer Help
460
Using Voice Blocks
Importing Prompt Resources
See the Sample Exported Prompt Listing, which should be used as a transcript by the recording studio. After
receiving the prompt audio resources from the professional audio recording studio, be sure to place the audio files
in the correct Composer Project resource path. This ensures that the resources will work properly with the existing
callflows that will use them. The Composer prompt resources are stored under the Composer Project folder
../Resources/Prompts. Example: ../Resources/Prompts/en-US/Brand_A.vox For a prompt item with audio resource
Resources/Prompts/en-US/Brand_A.vox, the new professionally recorded audio file must be identically located and
named Resources/Prompts/en-US/Brand_A.vox. If you do not do this, you must go to the callflow diagram block
properties to set the new prompt resource path, or rename the file to match existing prompt settings. Note: When
importing multilingual prompts, be sure to place the audio resource files in their corresponding prompt resource
locale folder. For example,
• English -- United States ../Resources/Prompts/en-US
• Spanish -- Spain ../Resources/Prompts/es-ES
To import file resources to the target Composer Project, use the Project Explorer. Or simply copy and paste the files
to the target prompts resource folder location of the Project Explorer. As an alternative, importing may be achieved
by using File > Import… Expand and select General > File System. In the Import dialog, set the From directory
field and Into folder fields, select the desired files, and click Finish. A sample is shown below.
Composer Help
461
Using Voice Blocks
Composer Help
462
Using Voice Blocks
Connection Pooling
When defining a database connection profile, you can use connection pooling, which maintains a set of database
connections that can be reused for requests to databases. This feature can enhance performance by avoiding timeconsuming re-establishment of connections to databases. While Composer does not support specific application
servers, this topic presents information on configuring Tomcat, JBoss, and Websphere application servers to
expose a pooled data source as a JNDI resource. This topic also contains information on creating a JDBC provider
for an Oracle database.
Connection Pooling for Tomcat Application Servers
For Tomcat, a JNDI resource is defined in a Context configuration. Do this in the global scope, at $TOMCAT_HOME/
conf/context.xml. Here is a sample:
<Context> ...
<Resource name="jdbc/pooledDS" auth="Container"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
factory="org.apache.naming.factory.BeanFactory"
driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
user="john" password="doe123"
jdbcUrl="jdbc:sqlserver://dbserver1:1433;databaseName=composer1" />
<Resource name="jdbc/oraclePooled" auth="Container"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
factory="org.apache.naming.factory.BeanFactory"
driverClass="oracle.jdbc.driver.OracleDriver"user="jane"password="doe456"
jdbcUrl="jdbc:oracle:thin:@dbserver2:1521:composer2" />... </Context>
Important Items
• name--should match the Connection Pool Name parameter given in the Connection Profile in Composer.
• user, password--these are the login credentials to the database.
• jdbcUrl--specifies the host, port and database name. Can be copied from the Connection Profile editor in Composer.
The JDBC URL can also use advanced options that might not be otherwise exposed by Composer. For example, to
enable Transparent Application Failover for a connection to an Oracle database, the URL can be given as:
jdbcUrl="jdbc:oracle:oci:@(DESCRIPTION=(LOAD_BALANCE=on)(FAILOVER=on)(ADDRESS=(PROTOCOL=tcp)(HOS
(ADDRESS=(PROTOCOL=tcp)(HOST=host2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=dbcluster)
(FAILOVER_MODE=(TYPE=session)(METHOD=basic))))"
Composer Help
463
Using Voice Blocks
Additional Pooling Parameters
Additional pooling parameters can be customized here as well, for example:
<Resource name="jdbc/pooledDS" auth="Container"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
factory="org.apache.naming.factory.BeanFactory"
driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
user="john"
password="doe123"
jdbcUrl="jdbc:sqlserver://dbserver1:1433;
databaseName=composer1"
maxPoolSize="20" acquireRetryAttempts="0" /
For a full list of available settings, refer to the c3p0 documentation, which is the third-party connection pooling
library used by Composer
http://www.mchange.com/projects/c3p0/index.html
http://www.mchange.com/projects/c3p0/index.html.
Connection Pooling for JBoss Application Servers
To define connection pooling for JBoss:
1. Add the c3p0 and JDBC driver JARs to JBoss's global lib directory ($JBOSS_HOME/server/<instance>/lib).
This is because JBoss will initialize the connection pool upon startup regardless of what applications are deployed.
This is in contrast to Tomcat, which creates the connections on demand.
2. Next, define the JNDI resources in a file called c3p0-service.xml. Copy the file into $JBOSS_HOME/
server/<instance>/deploy.
Sample:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE server> <server> <mbean
code="com.mchange.v2.c3p0.jboss.C3P0PooledDataSource"
name="jboss:server=SQLServerDS">
<attribute name="JndiName">java:jdbc/
pooledDS</attribute>
<attribute
name="JdbcUrl">jdbc:sqlserver://dbserver1:1433;databaseName=composer1</attribute>
<attribute
name="DriverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</attribute>
<attribute name="User">john</attribute>
<attribute
name="Password">doe123</attribute> </mbean> <mbean
code="com.mchange.v2.c3p0.jboss.C3P0PooledDataSource" name="jboss:server=OracleDS">
<attribute name="JndiName">java:jdbc/oraclePooled</attribute>
<attribute
name="JdbcUrl">jdbc:oracle:thin:@dbserver2:1521:Composer2</attribute>
<attribute
name="DriverClass">oracle.jdbc.driver.OracleDriver</attribute>
<attribute
Composer Help
464
Using Voice Blocks
name="User">jane</attribute>
</mbean> </server>
<attribute name="Password">doe456</attribute>
Pooling Parameters
Specify pooling parameters are specified by adding more <attribute> elements, e.g.,
<mbean code="com.mchange.v2.c3p0.jboss.C3P0PooledDataSource"
name="jboss:server=OracleDS">
<attribute name="JndiName">java:jdbc/
oraclePooled</attribute>
<attribute name="JdbcUrl">jdbc:oracle:thin:@dev
dbserver2:1521:Composer2</attribute>
<attribute
name="DriverClass">oracle.jdbc.driver.OracleDriver</attribute>
<attribute
name="User">jane</attribute>
<attribute name="Password">doe456</attribute>
<!-- note that the attribute names must be capitalized -->
<attribute
name="MaxPoolSize">20</attribute>
<attribute
name="AcquireRetryAttempts">0</attribute> </mbean> For a full list of available settings, refer to the
c3p0 documentation, which is the third-party connection pooling library used by Composer
([http://www.mchange.com/projects/c3p0/index.html http://www.mchange.com/projects/c3p0/index.html]).
Configuration Files
The following configuration files are automatically generated by Composer's WAR export functionality and do not
require any user action: web.xml and jboss-web.xml
web.xml In the web application itself, the deployment descriptor (WEB-INF/web.xml) needs to specify a resource
reference: <resource-ref> <res-ref-name>jdbc/pooledDS</res-ref-name><restype>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref>
jboss-web.xml
This special JBoss-specific configuration file (WEB-INF/jboss-web.xml) is required to map the resource-ref to the
globally defined resource.
<?xml version="1.0" encoding="UTF-8"?> <jboss-web> <resource-ref> <res-ref-name>jdbc/
pooledDS</res-ref-name><res-type>javax.sql.DataSource</res-type><jndi-name>java:jdbc/
pooledDS</jndi-name></resource-ref> </jboss-web>
Connection Pooling for WebLogic Application Servers
When the application Server is WebLogic, there must be an extra configuration file in WEB-INF called
weblogic.xml. First, though, confirm that the following is present in web.xml in the exported .war file:
<resource-ref> res-ref-name>jdbc/poolDS</res-ref-name> </res-type>
<res-auth>Container</res-auth> </resource-ref>
res-ref-name should match the pool name in the connection.properties file, and it should be prefixed by jdbc/
Composer Help
465
Using Voice Blocks
weblogic.xml File The weblogic.xml can be added to the Composer Project in WEB-INF. Afterwards, you will
have to export the .war file from Composer again and redeploy. The weblogic.xml should contain:
<?xml version="1.0" encoding="UTF-8"?> <wls:weblogic-web-app
xmlns:wls="[http://xmlns.oracle.com/weblogic/weblogic-web-app"
http://xmlns.oracle.com/weblogic/weblogic-web-app"]; xmlns:xsi="[http://www.w3.org/
2001/XMLSchema-instance" http://www.w3.org/2001/XMLSchema-instance"];
xsi:schemaLocation="[http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/
javaee] [http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://java.sun.com/xml/
ns/javaee/ejb-jar_3_0.xsd] [http://xmlns.oracle.com/weblogic/weblogic-web-app
http://xmlns.oracle.com/weblogic/weblogic-web-app] [http://xmlns.oracle.com/weblogic/
weblogic-web-app/1.2/weblogic-web-app.xsd" http://xmlns.oracle.com/weblogic/weblogicweb-app/1.2/weblogic-web-app.xsd"];></span> <span style="font-family:courier
new,courier,monospace"><wls:resource-description></span> <span style="fontfamily:courier new,courier,monospace"><wls:res-ref-name>jdbc/poolDS</wls:res-refname></span><span style="font-family:courier new,courier,monospace"><wls:jndiname>poolDS</wls:jndi-name></span><span style="font-family:courier
new,courier,monospace"></wls:resource-description></span> <span style="fontfamily:courier new,courier,monospace"></wls:weblogic-web-app>
Note the following:
The wls:res-ref-name should match res-ref-name in web.xml. wls:jndi-name should be the JNDI Name
in the WebLogic configuration.
.
Composer Help
466
Using Voice Blocks
Connection Pooling for WebSphere Application Servers
WebSphere has its own connection pooling capabilities, so you won't be using c3p0. The data sources are defined
in the WebSphere management console.
Configuration Files
The following configuration files are automatically generated by Composer's WAR export functionality and do not
require any user action: web.xml and ibm-web-bnd.xmi
Creating a JDBC Provider for an Oracle Database
SQL Server driver is built-in for WebSphere. however, the Oracle driver must be configured as a JDBC provider.
1. From the left-hand side panel, open Resources > JDBC > JDBC Providers.
2. Click New.
3. In Step 1, choose the following:
JDBBProvider.gif
Composer Help
467
Using Voice Blocks
4. In Step 2, specify the location of the ojdbc14.jar file. The JAR can be copied from Composer's tomcat/lib directory
to a location local to the WebSphere server.
Creating Data Sources
1. On the left-hand side panel, open Resources >JDBC > Data sources.
2. Click New.
3. Enter anything you like under Data source name.
4. Under JNDI name, enter the name that matches the one given in the Connection Profile Editor. Hit Next.
5. For the Select JDBC provider step, choose WebSphere embedded ConnectJDBC driver for MS SQL Server for SQL
Server, or Oracle JDBC driver for Oracle. Hit Next.
6. Enter the database name, host name and port of the database server. Click Next. Click Finish on the summary page.
7. Next , you must specify the username and password for the database connection. Click on the data source that was
just created and then click on the Custom Properties link.
8. Create two new properties, called user and password, and specify the credentials for the database.
9. After saving the data source, use the Test Connection button to test.
10. Use the Connection Pool Properties, link to customize the pooling settings. Refer to the WebSphere documentation
for details.
The following items are generated by Composer's WAR export functionality and require no user action.
WEB-INF/web.xml is required, similar to JBoss.
<resource-ref
id="ResourceRef_1276009394684">
<res-ref-name>jdbc/pooledDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> WEB-INF/ibm-web-bnd.xml does the same thing as jboss-web.xml does for
JBoss... <?xml version="1.0" encoding="UTF-8"?> <webappbnd:WebAppBinding
xmi:version="2.0" xmlns:xmi= "[http://www.omg.org/XMI" http://www.omg.org/XMI"];
xmlns:webappbnd="webappbnd.xmi" xmi:id="WebAppBinding_1276009185886"
virtualHostName="default_host"> <webapp href="WEB-INF/web.xml#WebApp_ID"/>
<resRefBindings xmi:id="ResourceRefBinding_1276009394684" jndiName="jdbc/pooledDS">
<bindingResourceRef href="WEB-INF/web.xml#ResourceRef_1276009394684"/>
</resRefBindings> </webappbnd:WebAppBinding>
Composer Help
468
Common Properties for Callflow Blocks
Common Properties for Callflow Blocks
The following properties are common to multiple blocks. Their descriptions are placed here to minimize duplication
of content:
Name Property
The Name property is present in all blocks in Composer. The Name property is the first property for all blocks. Use
the Value field beside in the Name property row of the block's property table to name the block.
• Block names should conform to ECMAScript and VoiceXML identifier naming conventions.
• There is no maximum limit to the number of characters allowed.
• Names must consist only of numbers, letters, and underscore characters.
• Names must begin with a letter or underscore.
• Except for the Entry and Exit blocks, you should give all blocks a descriptive name. For example, if an Input block asks
the caller to input an account number, then the name of the block could be Input_Account_Number.
• The name of the block is used as the Name of the VXML <form> tag that gets generated for that block.
To provide a name for a block:
1. Select the Name row in the block's property table.
2. In the Value field, type a block name that conforms to the restrictions above.
Block Notes Property
Can be used to add comments.
Exceptions Property
Use this property to define which exception events the block is designed to handle. These are VoiceXML events
that are either thrown by the interpreter, or generated in response to a caller action. Note: A catch handler called all
has been added to catch all exception events. To handle (support) a specific event:
1. Click the Exceptions row in the block's property table.
2. Click the ... button to open the Exceptions dialog box.
3. From the list of events on the Not Supported pane, select the event that you want to handle.
4. Click the Add > button to move the event to the Supported pane.
Composer Help
469
Common Properties for Callflow Blocks
An example is shown below.
To explicitly not handle (not support) a specific event marked as supported:
1. Click the Exceptions row in the block's property table.
2. Click the ... button to open the Exceptions dialog box.
3. From the list of events on the Supported pane, select the event that you do not want to handle.
4. Click the < Remove or < Remove All button to move the event (or all events) to the Not Supported pane.
To rearrange (reorder) the sequence of events on the Supported pane:
1. Click the Exceptions row in the block's property table.
2. Click the ... button to open the Exceptions dialog box.
3. From the list of events on the Supported pane, select an event that you want to rearrange.
4. Do one of the following:
• To move the event higher in the sequence, click the Up button.
• To move the event lower in the sequence, click the Down button.
Notes:
Composer Help
470
Common Properties for Callflow Blocks
• Each block has its own predefined set of events on the Exceptions property dialog box. Genesys recommends that
you not remove any of the predefined events from the Supported list.
• Before generating code, each supported event must be handled by connecting its red node on the side of the block to
the inport (input node) of another block.
• The events in the Entry block are global in scope.
• Events defined in other blocks are local to that block only. When an event is thrown, if a handler for that event is
declared in the current block, that local event handler is called.
• If there is no local event handler for the event, but there is a global event handler declared in the Entry block, then the
global event handler from the Entry block is called.
Condition Property
The Condition property indicates that the log will be active only if the given condition is true at runtime. To provide a
condition setting for a log:
1. Select the Condition row in the block's property table.
2. Type the condition to evaluate against.
For example, assume in Entry block, there is a variable "MyVar==3. Assume also that you would like to log the
session ID (GVPSessionID variable in Entry block) for all sessions where MyVar=3. In this case you must set the
condition to "AppState.MyVar=3". If this condition is true, then GVPSessionID will be written to the log, otherwise it
will be ignored.
Enable Status Property
This property controls whether or not a block contributes code to the application. Diagrams visually indicate when a
block is disabled. You may wish to use this property if there is a need to temporarily remove a block during
debugging or, for other reasons during development, temporarily disable a block. This saves the effort of having to
remove the block and then add it back later. You can also right-click a block and select Toggle Enable Status. The
GVP Debugger skips over deactivated blocks.
Logging Details Property
Logging details contains the expression that will be logged at runtime by GVP. If logging details are specified, then
logging is generated for the block; if no logging details are specified, no logging is generated. To create logging
details:
1. Click the Logging Details row in the block's property table.
2. Click the ... button to open the Logging Details dialog box.
3. In the Logging Details dialog box, click Add to open Expression Builder.
Composer Help
471
Common Properties for Callflow Blocks
4. Create an expression to be used for logging details, such as an expression based on the variables whose content you
wish to log.
Log Level Property
To assign a value to the Log Level property:
1. Select the Log Level row in the block's property table.
2. In the Value field, select one of the following from the drop-down list:
• Project Default. The block uses the project's default log level, which can be configured through the Project
properties.
• Info. This is an Informational level to log application-specific data.
• Debug. This is a Debug level used for application debugging.
• Error. This is an Error level to log error details.
• Warn. This is a Warning level to flag any application warnings.
• Alarm. This is an Alarm level to send the message as an alarm to the Genesys management framework.
Prompts Property
Use the Prompts property to specify the audio prompts that are played to the caller. You can specify pre-recorded
prompts, text, video, and several standard data types. SSML tags can be used inline in TTS prompts. For example:
Composer Help
472
Common Properties for Callflow Blocks
The example below shows the dialog box opening from the Prompts property when Type is Resource.
Composer Help
473
Common Properties for Callflow Blocks
To add, delete, or arrange prompts:
1. Click the Prompts row in the block's property table.
2. Click the ... button to open the Set Prompts Properties dialog box.
Set Prompt Properties Dialog Box
Prompt Messages Area
• Name--Displays the name of the prompt based on what you enter under the Prompt Details area.
• Value*--Displays the prompt's value based on what you enter in the Prompts Details area.
• Interpret-As--Displays the data type of the prompt. The table below details available selections.
Composer Help
474
Common Properties for Callflow Blocks
Prompt Details Area
Type--Displays whether the prompt is ARM, Resource, Value, or Variable based on what you enter under the
Prompt Details area. Note that when Type is Variable, the runtime values of the specified variable should be of
type string. Numerical values should be quoted, e.g. when assigning a value using the Assign block, or during a
debugging session.
Type/Interpret-As Combinations When Type is set to Value and
• Interpret-As is set to Time, you can select the Time Format in the drop-down list. The time format is displayed in
12-hour mode (1:00 PM, 2:00 PM, and so on), or 24-hour mode (13:00, 14:00, and so on).
• Interpret-As is set to Audio, you can specify an HTTP or RTSP URL.
• Starting with 8.1.410.14, a new Phone option is introduced in the Interpret-As input list when Type is set to
Value or Variable is selected. If the phone option is selected, the Value/Variable is spoken in the following
manner: If a 10-digit number, the phone number is spoken out in a group, like 3 digits – 3 digits – 4 digits - with
350 milliseconds pause between the groups. If there is an extension number, the number is spoken out
separately. For example, a phone with extension: 6507124455x5645. If a 7-digit number, the phone number is
spoken out in a group like 3 digits – 4 digits - with 350 milliseconds pause between them. If other than 10 and
7-digit numbers, the numbers are spoken out as normal alphanumeric prompts.
When Type is set to Variable and Interpret-as is set to Custom, a Custom-Interpret As field is enabled, which
can be used for custom prompt types as detailed in the table below. When Type is set to Resource and InterpretAs is set to Audio, an Alternative Text field displays. This alternative text is played back to you in the event that
the audio file is not available. When Type is set to ARM and Interpret-As is set to Audio, you can specify a base
URL, audio resource ID, and personality ID. These can be used for managing audio resources in the arm (Audio
Resource Management (ARM)) section of the Genesys Administrator Extension Server Application object. When
Type is set to Variable and Interpret-As is set to Audio, you can specify a variable that contains an HTTP or RTSP
URL. This applies to the Prompts, DB Prompt, Input, Menu, and Record blocks. Add Button Use the Add button to
enter prompt details.
1. Click Add to enable the fields.
2. In the Name box, accept the default name or change it.
3. From the Type drop-down list, select ARM, Resource, Value, or Variable.
4. In the Interpret-As drop-down list, select from among the data types shown in the following table:
Plays an audio sound file.
AUDIO
BOOKMARK
Composer Help
Notes: If you select Audio, an audio file is optional, and you select the
audio file if needed using the Browse button. Use the Clear button to
remove an audio resource file selection. You can then specify an audio
resource URL through Expression Builder, an audio resource identifier,
personality identifier, and audio format. When you select ARM from the
Type dropdown list, Interpret-As defaults to Audio. The VOXFILEDIR
variable in the Entry block defines the audio file directory. For more
information, see the Entry block help. You can also specify an alternative
text for the audio file. This alternative text is played back to you in the
event that the audio file is not available or is not provided. Typically, you
can use this option during development, when the production audio files
are not recorded yet.
An indicator that sets the place in a sequence of prompts.
It can be used to detect the barge-in position during
playback of a prompt. It uses the TTS engine.
475
Common Properties for Callflow Blocks
An optional currency specifier followed by a number with
at most two decimal places. The currency specifier can
be:
CURRENCY
• $, British pound sign, yen sign, or Euro sign, OR
• 3-character ISO4217 currency code
In the U.S. English locale, 11234 would be spoken as "eleven thousand,
two hundred and thirty-four dollars."
Plays DTMF tones.
DTMF
Any string of numerical digits, the characters a to d, #, or *
Speaks the specified date.
DATE
NUMBER
yyyyMMdd, e.g. 20080604 Note: If you select the DATE type, click the
drop-down arrow to display a calendar from which you can select the
date.
Speaks a number. For example, 1234 would be spoken
as "one thousand, two hundred, thirty-four."
Any integer (no decimals)
ORDINAL
Speaks the number as an ordinal. For example, 1 would
be spoken as "first."
Any integer (no decimals)
STRING
Speaks a string of letters or numbers one character at a
time. For example, 1234 would be spoken as "one, two,
three, four."
Note: The STRING type for U.S. English local accepts 0-9, A-Z, and
+<=%->&.#*@. All other locales accept only 0-9 and A-Z.
TEXT
Plays the specified text with text-to-speech software
Speaks the specified time.
TIME
hhmm[ss][?hap] (seconds is optional, and format specifier is optional)
The format specifiers mean the following: ? -- neither am or pm, e.g. two
o’clock or two fifteen h -- 24-hour clock, e.g. fourteen hundred hours or
fourteen fifteen a -- AM, e.g. two AM or two fifteen AM p -- PM, e.g. two
PM or two fifteen PM If no format specifier is given, it defaults to ?, i.e.
am/pm is unknown. Note: 12 hour time selection will show the Time
value in 24 Hr format in the Prompt Message Table. (e.g. 1:45:39 PM
will be shown as 134539) whereas it will work as expected in the
generated code to read the value in 12 hour format during runtime.
Use to allow VoiceXML to insert text into an existing video
image/stream.
VIDEO
If Video is selected, you can check the Enable Text Overlay box.
• Click the Fx button to open the Video Text Overlay
dialog box.
Composer Help
476
Common Properties for Callflow Blocks
• Click Add to specify: text (required), font name, font
style, font color, background color, font size, font
width, X axis offset, and Y axis offset.
This Interpret-As option can be used to define Custom
Prompts to customize the Prompt reading functions. To
define a Custom Prompt:
• Open the predefined customprompts.js file inside
each language locale folder applicable for the Project.
(Resource\Prompts\$Language$).
• Use the customprompts.js file present inside to
define custom prompt methods.
CUSTOM
• Refer to the syntax and rules mentioned in the default
customprompts.js file inside./Resources/
Prompts/en-US folder.
• Start each Custom Prompts methods with the
language locale name to achieve Multilangual support
during runtime execution (mandatory).
The Prompts property dialog will only parse methods defined in the
customprompts.js file.
During design time, the default language locale customprompts.js
file is parsed and listed for method selection.
During the runtime call, the APP_LANGUAGE variable value is used to
dynamically select the language local folder.
• Use 'audio' option to play audio files in the Custom
Prompts methods using <audio> tag and 'value'
option to play expressions using <value> tag.
5. In the Value box, enter data for the selected data type.
Place the audio files in the Resources\Prompts\{APP_LANGUAGE} folder under the Java Composer Project.
Audio files can be added to the project by copying and pasting from the Windows file system into the Java
Composer Project in the Project Explorer. Note: By default, Genesys supplies .vox files only for mulaw 8Khz. If you
are using any other audio format for playback of audio files, replace the files with the corresponding audio files in
the required audio format.
Up/Down Buttons Use the Up and Down buttons to reorder your prompt elements.
Select the element you want to re-position, and then click Up or Down, as necessary. Delete Button To delete a
prompt:
1. Select an entry from the list.
2. Click Delete.
This property is used in the following blocks: Prompt Block, Menu Block, Input Block, Record Block
Composer Help
477
Common Properties for Callflow Blocks
Retry Prompts Property
The Retry Prompts property in a Menu block, Input block, or Record block enables you to set different retry prompts
that are played to the caller when the voice application encounters a nomatch or noinput condition. You are allowed
up to three retries for either a noinput or a nomatch error condition. You must select the listed items in sequence
and add the necessary vox file or text input. To set retry prompt properties:
1. Click the Retry Prompts row in the block's property table.
2. Click the ... button to open the Retry Prompts dialog box.
Note: You must set the Number Of Retries Allowed property to a value greater than 0 in order to have access to
the Retry Prompts dialog box. Prompts Fields
• Name-- Displays the name of the retry prompt.
• Type--Displays whether the retry prompt is a Resource, Value, or Variable.
• Interpret-As-- Displays the data type of the retry prompt.
• Alternate Text--(Enabled only when Interpret-As is set to Audio.) This alternative text is played back to you in the
event that the audio file is not available.
• Value*--Displays the retry prompt's value (Retry Prompt).
Note: When Interpret-As is set to Time, you can select the Time Format in the drop-down list. The time format is
displayed in 12-hour mode (1:00 PM, 2:00 PM, and so on), or 24-hour mode (13:00, 14:00, and so on).
Retry Prompt Messages Property
For Input and Menu Blocks:
After setting a value for the Number Of Retries Allowed property, Retry Prompt Messages will contain one
noinput and one nomatch entry per retry. For example, if Number Of Retries Allowed is set to 2, the Retry
Prompt Messages table contains the following entries: noinput1 nomatch1 noinput2 nomatch2
For Record Blocks:
Retry Prompt Messages will contain one noinput entry by default. To set or change retry prompt properties:
1. Select a retry prompt in the Retry Prompt Messages table to enable Prompt Details fields.
2. In the Name box, accept the default name or change it.
3. From the Type drop-down list, select Resource, Value, or Variable.
4. In the Interpret-As drop-down list, select from among the data types shown in the following table:
AUDIO
Composer Help
Plays an audio sound file. This is available only when
Resource or Variable is selected as the Type.
478
Common Properties for Callflow Blocks
Note: If you select Audio, an audio file is optional, and you select the
audio file if needed using the Browse button. Use the Clear button to
remove an audio resource file selection. The VOXFILEDIR variable in
the Entry block defines the audio file directory. For more information, see
the Entry block help. You can also specify an alternative text for the
audio file. This alternative text is played back to you in the event that the
audio file is not available or is not provided. Typically, you can use this
option during development, when the production audio files are not
recorded yet.
BOOKMARK
An indicator that sets the place in a sequence of prompts.
It can be used to detect the barge-in position during
playback of a prompt. It uses the TTS engine.
An optional currency specifier followed by a number with
at most two decimal places. The currency specifier can
be:
CURRENCY
• $, British pound sign, yen sign, or Euro sign, OR
• 3-character ISO4217 currency code
In the U.S. English locale, 11234 would be spoken as "eleven thousand,
two hundred and thirty-four dollars."
Speaks the specified date.
DATE
yyyyMMdd, e.g. 20080604 Note: If you select the DATE type, click the
drop-down arrow to display a calendar from which you can select the
date.
Plays DTMF tones.
DTMF
NUMBER
Any string of numerical digits, the characters a to d, #, or *
Speaks a number. For example, 1234 would be spoken
as "one thousand, two hundred, thirty-four."
Any integer (no decimals)
ORDINAL
Speaks the number as an ordinal. For example, 1 would
be spoken as "first."
Any integer (no decimals)
STRING
Speaks a string of letters or numbers one character at a
time. For example, 1234 would be spoken as "one, two,
three, four."
Note: The STRING type for U.S. English local accepts 0-9, A-Z, and
+<=%->&.#*@. All other locales accept only 0-9 and A-Z.
TEXT
Plays the specified text with text-to-speech software
Speaks the specified time.
TIME
Composer Help
hhmm[ss][?hap] (seconds is optional, and format specifier is optional)
The format specifiers mean the following: ? -- neither am or pm, e.g. two
o’clock or two fifteen h -- 24-hour clock, e.g. fourteen hundred hours or
fourteen fifteen a -- AM, e.g. two AM or two fifteen AM p -- PM, e.g. two
PM or two fifteen PM If no format specifier is given, it defaults to ?, i.e.
479
Common Properties for Callflow Blocks
am/pm is unknown. Note: 12 hour time selection will show the Time
value in 24 Hr format in the Prompt Message table. (e.g. 1:45:39 PM
will be shown as 134539) whereas it will work as expected in the
generated code to read the value in 12 hour format during runtime.
5. In the Value box, enter data for the selected data type, or keep the default value of Retry Prompt.
See template samples that use the Menu or Input blocks.
Composer Help
480
Routing Applications and Workflows
Routing Applications and Workflows
This section introduces routing applications and workflows and summarizes show to create them.
Introduction to Routing Applications and Workflows
• Workflow Post Installation
• IRD Functionality Included in Composer
• Frequently Asked Questions
• Upgrading Workflows
• Getting Started with Routing Applications
• Creating Routing Applications
• ORSOptions
Composer Help
481
Routing Applications and Workflows
Routing FAQs
Genesys Routing Frequently Asked Questions
Related Topics
• Composer 8.1.4 Deployment Guide
• Composer 8.1.4 Help
This page provides answers to common questions that IT
personnel might have when planning or considering the
addition of Genesys Routing to their site. The information
on this page applies to 8.1.x versions of Composer.
What is Genesys Customer Experience Routing and how is it unique?
Genesys Customer Experience Routing is computer software that helps organizations better manage customer
journeys. Routing prioritizes and matches the right interaction with the right resource at the right time. Our
approach is unique in the industry because it’s:
• SIMPLE to support the 80% of customer interactions that are routine
• DYNAMIC to automatically adapt to fluctuations within the 80% (so this variability doesn’t consume 100% of
resources)
• POWERFUL to drive the 20% of interactions that are not routine but are the most valuable (across time, channels,
multimedia, front and back office)
We help companies create better customer experiences. Our DYNAMIC routing frees you to do more than just
what is SIMPLE. And that gives you bandwidth to apply the full POWER of Genesys to those moments that truly
matter.
What is a routing application? What are the basic elements?
Routing provides instructions about how to handle and where to direct interactions under different circumstances.
Conceptually, a routing application is like a series of prioritized instructions that take into account various factors to
determine the optimal routing target, and what to do next if that action is not possible within the specified
constraints.
Composer Help
482
Routing Applications and Workflows
Routing applications are made up of a number of different elements, described here at a conceptual level:
• Data can come from various sources and may include customer, contextual, operational, or analytical data. Attached
Data, which is included in call messaging as Key Value Pairs (KVPs), is what you know about a specific interaction.
Attached data can be added and updated throughout the life of the interaction (e.g., as a call flows through the IVR,
routing, agent desktop, and reporting).
• Skills are what you know about an agent. To identify the best available resource to handle a particular interaction,
routing looks for desired combinations of Skills at the individual level (per agent), at the team level (per skill group, or
queue’), or across a virtual pool of resources (virtual queue’).
Skills should not represent absolutely everything about agents, but simply the minimum needed to accurately route
and report on interactions. Because of the combinatorial power of Skills, it is best not to get too granular. Modify an
agent’s Skills only when the agent acquires new job functions, training, or capabilities; do not change agents’ skills
merely to redirect traffic.
Each Skill can optionally have a Proficiency (Rating in Genesys Administrator), which rates an agent's expertise for
a particular Skill (e.g., Spanish level 5 vs. 10). This allows an organization to route to the best-skilled available
agent, and then if no agents at that proficiency level are available within a certain amount of time, expand the target
to agents with a lower proficiency level and/or an alternative combination of skills.
Logic provides the overall routing decisioning or instructions. Logic specifies the conditions under which the routing
applies and the method of target selection. The logic can be based on a number of different considerations, such as
skill targeting, service level, load balancing, percentage allocation, statistics, or workforce. (See below for more
details.)
Certain aspects of routing can be configured and saved as Reusable Objects. There are various types of reusable
objects, including subroutines, list objects, interaction data, etc. Reusing these building blocks within and across
routing applications improves the efficiency, quality, and simplicity of the routing.
A well designed and implemented routing solution should be able to handle most of the ongoing routing needs in a
dynamic and automated fashion. However, there may be some situations where the business needs or wants to
make changes on a frequent or ongoing basis. These select elements can be exposed to business users either as
Operational Parameters or as Genesys Rules to facilitate greater business agility while maintaining system stability:
• Operational Parameters are simple conditional variables that give business users limited control (e.g., After Hour
Messages, Hours of Operation, Emergency Status, etc.). Users can make changes to these parameter settings
through the Genesys Administrator Extensions (GAX) interface. (Alternatively, this can also be done via list objects in
Interaction Routing Designer (IRD).) The business user cannot change the underlying logic (only the pre-specified
values of the exposed parameters), and does not require any specialized technical training.
• Genesys Rulesare logical representations of underlying routing that are written in plain language (i.e., meta-language,
not code). They are useful when the business user (typically a business analyst) wants greater control over the
conditions, logic, and actions associated with the routing (e.g., create differentiated customer service treatments
based on segmentation, marketing campaigns, etc.). Users can make updates to the business rules, but only for
those parts of the routing that have been exposed through the business user interface within Genesys Conversation
Manager. Although the business user isn’t actually viewing or changing the code directly, they still require a clear
understanding of the business logic and potential impact of changes.
What are some of the most common types of routing?
The table below lists the most common types of routing.
Composer Help
483
Routing Applications and Workflows
TYPE
DESCRIPTION
Agent Group
sRouting interactions to a specified group of agents. This
may be based on job type (e.g., Tier1Agents), location or
site (e.g., MiamiAgents), etc.
Auto Attendant
Routing implemented to support simple menus (e.g.,
audio prompts and touchtone selections), mimicking the
functionality of a basic IVR.
Blended
Routing which allows the same agent or select resources
to handle more than one type of interaction (e.g., Inbound/
Outbound, multimedia). Blending should be used to make
use of underutilized resources and to prevent service
level fluctuations (e.g., forcing agents to log off a voice
queue due to an influx of Social Media interactions).
Consider how many interactions of each type an agent
can handle at a time and define capacity rules according.
Also, increment and/or cap priority values based on
interaction types, so voice interactions don’t always take
precedence over non-voice ones, or vice-versa.
Business Case
Routing to provide differentiated customer service
treatments for specific business processes or use cases
(e.g., marketing campaigns, account status, payment due,
collections, regulatory, etc.).
Callbacks/Virtual Hold
Routing that accounts for the prioritization and targeting
when a call back to a customer is required, requested, or
scheduled.
Cascading Routing
Routing that uses multiple tiers of prioritized routing
decisioning, such that if the conditions for the highest
priority routing instructions are not met, the routing
automatically overflows to the next level of routing
instructions. Conditions can also be checked in parallel,
so that time is not wasted waiting to execute the first tier
of decisioning before considering the next one.
Concierge Routing/Hunt Groups
Routing to a specific agent or a small group of individuals
when specialized or personalized service is required.
Typically the interaction is first directed to the primary
agent assigned to a particular customer account.
However, if that agent is unavailable, the routing will
search for the next available team member within a small
hunt group.
Cross-Channel
Routing based on what a customer was just doing on
another channel (e.g., a customer is on the company’s
website or mobile application and then calls in).
Default Routing
Routing an interaction to the default destination that is to
be used when none of the conditions for the previous tiers
of routing decisioning have been met. This typically
occurs when traffic volumes spike for some reason and
the timeout thresholds for the previous tiers have been
exceeded, so the interaction overflows to the final default
destination.
Dynamic Routing
Routing that automatically adjusts based on pre-specified
priorities and conditions. Examples include: cascading
Composer Help
484
Routing Applications and Workflows
routing, target expansion, timeout thresholds, data dips,
holidays, emergencies, service outages, etc. Dynamic
routing is an efficient and valuable alternative to reskilling
agents on the fly, an inefficient and costly practice that is
often used in legacy contact center environments to
manually redirect traffic.
Enterprise Workload Management
Routing of work items across the enterprise. The same
Genesys routing capabilities that can be used to direct
customer-facing interactions (calls, emails, chat, etc.) can
also be leveraged to schedule, assign, distribute and track
work activities across the back-office.
Escalations
Routing of interactions which require the support or
intervention of a more highly skilled agent (e.g., ’Tier 2’) or
manager. This may be handled as a transfer, or it may
involve a conference call or consultative support with the
specialist.
eServices/Multimedia
Routing of various types of non-voice interactions (e.g.,
email, chat, text, social, video, open media). Different
media types may require unique skills (e.g., +Written
could be a skill type for email, chat, and text). Consider
how many interactions of each type an agent can handle
at a time and define capacity rules according (e.g., 1-4
chats per agent).
Interaction Type (a.k.a. Call Type)
Routing based on the type of customer and/or
ccustomer’s intent. This is typically determined based on
the number dialed (DNIS), from the caller’s menu
selection or activity within the IVR, or from content
analysis on an email or chat.
Interactive Voice Response Integration
Routing a call to the appropriate target based on what the
caller did or selected within an IVR. Based on integration
with Genesys Voice Platform (GVP) or a third-party IVR.
Last Agent Routing
Routing to the last agent the customer interacted with.
Especially useful for routing to a single point of contact
(such as a case owner) or for dropped calls that call back
in within a specified timeframe.
Outbound
Routing of interactions that are initiated by the
organization and directed outward to the customer (e.g.,
outbound calls, marketing campaigns, collections,
outbound emails, text messaging, proactive contacts,
etc.).
Overflow/Sharing Agents
Routing to an alternative queue or agent group, when the
primary target is unavailable or over-utilized. Lending and
borrowing of resources can be contingent upon certain
predetermined business conditions being met, so that
spikes in one team’s volume does not unduly impact
another team’s availability or service levels.
Percentage Allocation
Distributing interactions between queues based on a
percentage of total volumes (e.g., 60% to Site A and 40%
to Site B).
Priority Queuing
Routing which uses priority values to give preference for
one queue or interaction over another. Priorities can be
Composer Help
485
Routing Applications and Workflows
incremented over time, so if a lower-ranked interaction
has been waiting longer, it will be serviced before a
higher-ranked interaction that has just arrived. This
ensures that no interaction ever waits too long for service.
Queue Treatments
Routing that plays audio (e.g., music, ads, messages) or
provides certain functionality while callers are waiting in
queue or on hold.
Ring No Answer/Redirect on No Answer (RONA)
Routing to an alternative target if the original target fails
to answer (e.g., agent failed to log out). The agent will be
targeted the first time, but after that an action can be
specified (e.g., log out) so that agent isn’t targeted again
subsequently.
Segmentation
Routing based on the type of customer, the value of the
opportunity, or other marketing segmentation data.
Skills-Based
Routing to the best-skilled available agent based on a
combination of skills specified in the routing. This is
sometimes called ’agent-level routing,’ since Genesys
routing is capable of looking down to an individual agent’s
unique set of skills. However, in practice routing typically
looks for the desired skill set across a ’universal queue,’ to
optimize utilization across a large pool of resources.
Statistical Routing
Routing based on various database lookups and
operational conditions, such as Estimated Wait Time
(EWT), queue depth, service levels (SLAs), performance
goals, agent occupancy, skill utilization, seasonality,
special events, business processes, etc.
Target Expansion
Routing that expands its targets to increase the pool of
agents able to handle an interaction, be it after a time
period or triggered by the Estimated Wait Time (EWT)
being greater than a defined threshold. The highest skill
level is first targeted until the time limit is reached, and
then routing expands to include the next level of skills,
cascading down until all skill levels are included in the
targeting. This ensures that if the best suited pool of
agents are unavailable, then after the expansion timeout
the next best pool of agents are included in the targeting.
Transfers
Routing to handle transfers. Need to consider the routing
for transfers that are directed either into or out of the
contact center. The routing priority may vary depending
on whether it is an internal transfer (within the contact
center) or external transfer (to/from an outside group or
entity).
Workforce
Routing that factors in various workforce considerations
such as schedules, shrinkage, absenteeism, training, skill
development, desktop/tools, new-hires/career paths,
agent affinity for particular interactions, outsourcers,
unions, labor laws, etc.
Voicemail
Routing of inbound calls to voicemail (e.g., after hours
group voicemail inboxes). Or outbound routing which
Composer Help
486
Routing Applications and Workflows
addresses what to do if a voicemail is reached (i.e., leave
a message or not).
How many skills total does an organization typically have?
It depends on the size and requirements of the organization, but generally we see a range somewhere between
20-75 skills total. Once you start to approach 100 or more skills, you need to question if you are really taking
advantage of the combinatorial power of Genesys skills (i.e., where agents can be multi-skilled and Genesys routing
can look for multiple combinations of skills).
The average agent is typically highly proficient in 3-4 skills each, but may have lower proficiency in other skills to
provide backup. Expert agents may be highly proficient in 10 or more skills.
Skills and proficiencies grow and change over time, which is useful for staff development and retention. Skills need
to be monitored and aligned across staffing and routing.
If you find there are certain skills &endash; a, b, c &endash; that every agent has, then maybe you’ve dissected the
skills too granularly. Try renaming/regrouping these into one mega-skill (e.g., A). At the same time, you don’t want
to group so many skills together that you’ve gone back to queue-based routing, where each skill maps to a separate
queue.
If an organization requires many skills, rather than hard-coding each one separately directly into the routing logic, a
better and simpler approach may be to reference the skills as variables within the routing logic. Then do a data-dip
into a database or table look-up from a separate file. That way when skills need to be modified, this can be done in
the external data source housing the skill information, without having to change the actual routing logic itself. Softcoding skills is an effective approach if you find that skills change frequently over time, but the core routing does
not. Certain industries demand a high level of subject matter expertise (e.g., finance, insurance, healthcare), so
there are more total skills the organization needs. At the same time, since each agent requires more specialized
expertise to handle these inquiries, each agent typically handles fewer call types than in other industries where
agents may be more of generalists.
Don’t confuse Skills with Attached Data. For instance, consider situations in which many corporate clients need to
be supported, or there are state-specific licensing requirements (e.g., 401ks, insurance plans). The specific
account or plan can be identified based on the phone number dialed (DNIS) or other information gathered in the
IVR and attached to the call. There may be hundreds of these possibilities. However, this doesn’t necessarily
mean there need to be hundreds of different skills corresponding to each. An individual agent might be trained to
handle a more generalized skill (e.g., 401Ks in general), and a particular plan’s specifics can be screen-popped
through to the agent’s desktop based on the Attached Data.
How many routing applications should an organization have?
As a rule of thumb, a large contact center solution (a major line of business) should not need more than 10 routing
applications and subroutines (not counting reusable objects and subroutines used across applications).
It’s important to encompass two key design considerations when planning routing &endash; Flexibility and
Simplicity. This can be done by creating generic components and modularizing parts for reuse. A routing model
which is data-driven and accommodates the logic shared across applications and lines of business helps to
Composer Help
487
Routing Applications and Workflows
eliminate duplicated logic or code. Functionality which is replicated should be separated out into a sub-routine to
minimize the need to change multiple applications for feature enhancements and/or defect fixes. This minimizes
the number of applications required and still meets the demands of complex routing requirements.
What are skill proficiency levels, and what are they used for?
Proficiency is an optional way of reflecting how relatively good an agent is at a particular skill (e.g., Spanish level 5
vs. 10). Following the ’Simplicity’ design principle, it’s best to keep to three (or fewer) levels of skill proficiencies
&endash; for instance, High = 9, Medium = 6, and Low = 3. This allows additional proficiency levels to be added in
between if required in the future.
Proficiency enables Target Expansion &endash; e.g., first target agents with skill of Sales ≥ 9 proficiency for 15
seconds, then target Sales ≥ 6 for 15 seconds; then target Sales > 0). This circumvents agents having to log off
one agent group/queue and log into another, which is a common issue with legacy ACD-based solutions and can
be avoided using Genesys routing.
How many tiers of cascading routing should there be?
With basic Skills-Based Routing, 4 tiers are typical &endash; 3 for the three skill proficiencies and the forth tier for
emergency (e.g., breached threshold, all agents log off).
When using additional soft skills to provide an extra level of customer experience, then an additional tier will be
required before the 4 tiers previously mentioned.
What Reporting considerations need to be taken into account?
First, the Reporting requirements need to be well defined. What are the business goals of the solution? How will
success be measured? What are the KPIs? How does the business need to slice and dice the data? How will
reporting be represented? What needs to be monitored in near real-time vs. historically? Who are the different
consumers of reporting and what do they want/need to see? What business intelligence is needed &endash;
analytics, trends, outliers, outcomes, actionable insights, alerts?
Routing must then be aligned with those Reporting needs. This is typically supported through Attached Data
associated with each interaction (e.g., line of business, customer segment, routing point/agent, service type,
disposition code, business result, etc.). Decide on a flexible approach for attaching data. Don’t attach too much (as
it may have a performance impact). Consider codifying values to reduce the total data overhead. And be very clear
about what data represents at the point it was attached.
Composer Help
488
Routing Applications and Workflows
What Workforce Management considerations need to be taken into
account?
Genesys routing allows an interaction to be serviced by the best-skilled available agent across a virtualized pool of
resources, and to expand the target (to lower proficiency level and/or a different skill set) if the desired target isn’t
available. Altering the original target (such as in target expansion) will always affect Workforce Management
(WFM), so it’s important to include WFM into the routing considerations.
• For instance, sometimes an agent might be working on a call type that is outside of what they normally work on. So
supervisors/team leads need the right insight to know their people are working on the right thing at the right time.
Genesys Routing works with a variety of industry WFM solutions, but there are additional advantages to using
Genesys Workforce Management:
• The Genesys WFM solution provides historical data collection and real-time analytics for all interaction types being
monitored by the Genesys environment.
• Genesys WFM integrates with the Genesys suite to utilize all of the Site, Agent, Skill, and Skill level information
contained therein.
• Genesys also provides the ability to base routing on agents’ specific future schedule states in Genesys WFM. For
instance, if an agent is scheduled to go on break soon, routing will not direct an interaction to them, to stay in
adherence.
Skills should not be changed to re-route traffic, due to absenteeism or overflow.
• Frequent ad hoc re-skilling of agents (to redirect traffic flow) is inefficient, fails to leverage dynamic routing, and can
wreak havoc with the accuracy of WFM forecasting for skill types.
• Agents should already have their skills and proficiencies in their profiles, but they may be scheduled to take particular
call types based on their scheduling and routing logic. Re-skilling of agents typically only happens if they have
acquired new skills (after training) or taken on a new job role.
• Most interaction flows should be handled via dynamic routing (such as target expansion). If traffic must be manually
redirected, then rather than re-skilling agents, keep agent skills the same and redefine the ’activity set’ object within
Genesys WFM. This reschedules agents to work on different activities during a given time period. That way you are
rescheduling the types of work they are handling, rather than changing the agents’ actual skills. This approach is
based on doing schedule-based routing (not just skills-based routing), and has a dependency on Genesys WFM, thus
taking advantage of the interoperability across the Genesys suite of solutions.
What are the best practices for migrating from traditional queue-based
routing to Genesys Customer Experience Routing?
The most common mistake that organizations make when moving away from legacy ACD environments is trying to
replicate a like-for-like solution. While this is sometimes inescapable as an interim step (e.g., due to end-of-life
equipment), it should be avoided at all costs as the end state. Seize the opportunity to re-evaluate your current
customer experience and create an optimal solution:
• Start by identifying the business goals and customer experiences you want to deliver.
Composer Help
489
Routing Applications and Workflows
• Segment your customers and determine an appropriate customer service strategy for each (e.g., Elite Customers,
High Value, Mass Market, and Low Value).
• Consider the various channels and contact drivers of customer interactions. Rather than treating these as siloed touch
points, craft them into seamless customer journeys. (These journeys will likely vary per segment.)
• Evaluate your workforce and identify their hard and soft skills. Determine which skill sets and proficiencies are needed
to deliver the desired customer journeys. Are there gaps? Do job roles, teams, or training need to change?
• Prioritize (rank) desired customer journeys and match with optimal skill targets for each. Then consider the next best
treatment and target if these conditions cannot be met.
As a rule of thumb, routing should be designed so that:
• Your most valuable customer interactions (top 10-20%) receive the best service most of the time.
• The majority of your customer interactions (60-80%) receive good service (e.g., slightly longer wait, less skilled agents)
much of the time.
• Your costly customer interactions, overflows, or exceptional situations (bottom 5-20%) receive adequate service and
the minority of the time.
Composer Help
490
Routing Applications and Workflows
Getting Started with Route Applications
The information in this book will help you get started using Composer to build SCXML-based strategies (hereafter
called routing applications) which can be comprised of one or more workflows). It assumes you have reviewed the
topics in the general Getting Started with Composer section.
Preparation
Composer provides a wide range of tools to satisfy the needs of a diverse developer population. Ideally, you will be
already be familiar with SCXML, XML, and HTML. If you do not wish to write code or use existing code templates,
you can build routing workflows using Composer's designer where you place, configure, and connect routing blocks.
• View the samples
• Set preferences
• Review the blocks for routing applications
• Review the Quick Start topic
Get Started
• Create a new routing Project
• If routing multimedia interactions, review IPD planning & preparation.
Composer Help
491
Routing Applications and Workflows
IRD Functionality Included in Composer
Composer enables you to create SCXML-based routing applications to run on the Universal Routing 8.x platforms
and, as such, it includes functionality that was previously provided through Genesys Interaction Routing Designer
(IRD). The information below is provided for existing Genesys customers transitioning to Composer, who are
familiar with creating strategies in IRD.
Composer Blocks and IRD Objects
Composer refers to the fundamental element of a workflow as a block; whereas in IRD documentation, this element
is referred to as an object. The tables below group IRD objects based on their IRD toolbar category name and point
to the corresponding functionality in this release of Composer. Summary information is presented below.
• Learn about the differences between Composer and Interaction Routing Designer, which has historically been used to
create routing applications.
• See the Composer Quick Start for how to create a simple routing strategy, attach data that will appear on the agent
desktop, and route to the preferred agent.
Data & Services
IRD Object Name
Composer Block Name
Description
Database Wizard
DB Data
DB Data retrieves information from
the database. Uses a Query Builder.
Web Service
Web Service
Invokes Web Services. GET, POST
and SOAP over HTTPS are
supported.
Web Request
Invoke any supported HTTP web
request or REST-style web Service.
See sample: Routing Based on Web
Request.
Also see Composer's Server Side Blocks.
Miscellaneous
IRD Object Name
Composer Block Name
Description
Assign
Assigns a computed value/
expression or a literal value to a
variable. Variables are defined in
Assign
Multi-Assign
Composer Help
492
Routing Applications and Workflows
the Entry block. Capable of multiple
assignments.
Call Subroutine
Subroutine
Creates reusable sub-modules.
Entry
Entry
Sets global error (exception)
handlers. Defines global variables
(see Variables section below).. All
routing strategy diagrams must start
with an Entry block.
Exit
Exit
Terminates the strategy and returns
control back to calling workflow in
case of a subroutine.
Error Segmentation
Multiple error output ports can be
created in Composer blocks based
on each block's Exception property.
ECMAScript
Builds an ECMAScript expression
using the Expression Builder. Many
URS functions are available as
Genesys Functional Modules
described the Orchestration Server
Documentation Wiki can invoke
multiple functions.
If
Assign, Branching, ECMAScript
blocks all open Expression Builder
Expression Builder can be used to
create IF expressions.
Multi-Attach
ECMAScript
Can be used for attaching data to an
interaction.
Function
Multi-Function
Also see Composer's Routing Flow Control Blocks.
Routing
IRD Object Name
Composer Block Name
Description
Target
Routes an interaction to a target,
which can be Agent, AgentGroup,
ACDQueue, Place, PlaceGroup,
RoutePoint, Skill, or Variable. Skill
target uses Skill Expression Builder.
Percentage
Target
Statistics Order property in Target
block, lets you perform percentage
allocation. Also see sample: Routing
Based on Percent Allocation.
Default
Default Route
Routes the interaction to the default
destination. Can be overrridden by
the Set Default Route block.
Selection
Routing Rule
Composer Help
Orchestration Server 8.1 does not
support service level routing rules.
493
Routing Applications and Workflows
Orchestration Server 8.1 does not
support switch to strategy routing
rules.
Switch to Strategy
Force Route
Not exposed as a routing rule in
Composer.
Target
Although statistical routing rules are
not yet supported as in IRD's
Statistics routing object, users can
use the Target object Statistic
property to route based on the value
of a statistic. A Statistics Manager
and Builder let you create your own
statistics from URS predefined
statistics.
IRD Object Name
Composer Block Name
Description
ANI
Branching
See Your First Application: DNIS
Routing for an example.
DNIS
Branching
See Your First Application: DNIS
Routing for an example.
Date
Branching
See the sample Routing Based on
Date & Time.
Day of Week
Branching
See the sample Routing Based on
Date & Time.
Time
Branching
See the sample Routing Based on
Date & Time.
Branching
For classification segmentation, an
ECMAScript function determines if a
particular category name or ID exists
in the array of category objects
represented by an application
variable.
Branching
Use as a decision point in a workflow.
It enables you to specify multiple
application routes based on a
branching condition.
Force Route
Statistics
Also see Composer's Routing Blocks.
Segmentation
Classification Segmentation
Generic
Also see:
Composer Common Blocks
Context Services Blocks.
Composer Help
494
Routing Applications and Workflows
Voice Treatment
See Composer Equivalent to IRD Treatment.
eServices Multimedia
See Composer Equivalent to IRD Multimedia.
Outbound
See Outbound Common Blocks
Context Services
See Context Services Blocks
Business Process
See Interaction Processing Diagrams Overview and Interaction Process Diagram Blocks. Reusable Objects
• IRD List Object: See Composer's List Object Manager.
• IRD Variable List Dialog Box: See Entry block Variables property.
In contrast to IRD, which defines variables in a special dialog box outside of the strategy, Composer defines both
workflow and Project variables.
Composer Help
495
Routing Applications and Workflows
Workflow Post Installation
Workflow post installation steps are described below.
Tomcat
This step is necessary for both voice and routing applications. For Tomcat settings:
1. Select Window > Preferences, then expand Composer and select Tomcat. Starting with 8.1.420.14, Composer
supports Tomcat 7. Composer installation adds the role for manager-gui to Tomcat configuration for callflows and
workflows. The default username and password for the bundled Tomcat is admin. The username and password for
manager-gui is tomcat.
2. Provide the same port number that you specified during installation. The default user name and password for the
bundled Tomcat is admin.
3. To start Tomcat, click the
button on the main menu. If necessary, see Tomcat Service Failed to Start.
If you already have Java Composer Projects in the workspace and did not perform the Tomcat configuration earlier,
perform the following steps to deploy the project on Tomcat:
1. From the Project Explorer, right-click on the Java Composer Project and select Properties.
2. Select Tomcat Deployment and click the Deploy button.
Note: This also needs to be done if a Java Composer Project is imported or renamed as well.
Also see: Configuring_Proxy_Settings_in_Tomcat.
Configuration_Server
Routing applications may be developed either:
• With a connection to Configuration Server
• Or in an offline mode, without connecting to Configuration Server
Whether or not to connect depends on what you wish to do. For example, you would need to connect to
Configuration Server in order to access configuration objects through the Target block. You can connect to
Configuration Server now or wait until strategy design time. To bring up the Connect Configuration Server dialog
box:
1. From the main menu, select Configuration Server > Connect. Or select from the toolbar. Or use the keyboard
shortcut: Alt+I+C. (To disconnect, keyboardshortcut is: Alt+I+D).
Composer Help
496
Routing Applications and Workflows
2. Enter Username, Password, Application, Host, and Port information for the Configuration Server used in your
environment.
3. Enter the Client Port Range. When connecting to Configuration Server, Composer will attempt to find an unused
client-side port within the specified range to establish the connection.
4. Select Use Secure connection for Transport Layer Security (TLS) when connecting to Configuration Server.
5. Click Next:
• If authentication with the supplied User Name and Password is unsuccessful, Composer displays
informational text in a Configuration Server Connection Error dialog box.
• If a secure connection cannot be made, or if Transport Layer Security is not configured, a Configuration
Server Connection Error dialog box appears.
In both of the above scenarios, click the Details button for more information.
1. Select the Tenant. For a single-tenant environment, select Resources.
2. Click Finish. Composer can now access Configuration Server data during validation (if configured to do so) and other
operations.
Notes:
• You can configure an inactivity timeout for the connection to Configuration Server as well as the time for the
timeout warning dialog. For information on these features, see the Genesys Security Deployment Guide.
• For making live calls, you must manually configure the Routing Point in the Configuration Database as described
in the chapter on creating SCXML-based strategies in the Universal Routing 8.1 Deployment Guide. You must
also configure other Universal Routing Server options as described in that guide.
• Routing applications are not stored in Configuration Server as in 7.x and earlier. They are stored in the
Workspace that you specify.
MIME_Types
MIME (Multipurpose Internet Mail Extensions) refers to a common method for transmitting non-text files via Internet
e-mail. By default the SCXML MIME type is already configured in the Tomcat server bundled with Composer. If you
are using the Internet Information Services (IIS) Application Server to deploy SCXML strategies, add the following
MIME type extensions through the IIS Manager of your webserver:
.json
text/json
.scxml
text/plain
.xml
text/xml
Predefined_Statistics
There is an option to control whether or not to create Universal Routing Server predefined statistics. You will want to
do this if you plan to route based on the value of a statistic (for example, statistic StatTimeInReadyState).
Composer Help
497
Routing Applications and Workflows
1. Select Window > Preferences.
2. Expand Composer > Configuration Server.
3. Check the box: Create router predefined statistics when connecting to Configuration Server.
Orchestration
In addition to specifying the HTTP request parameters, both Universal Routing Server (URS) and Orchestration
Server (ORS) must be properly configured outside of Composer using Configuration Manager or Genesys
Administrator. In addition to specifying HTTP request parameters, the URS configuration option strategy must be
set to ORS. This ensures that URS is prepared to process interactions according to requests received from ORS.
Important! if you have both Composer and IRD set up in the same environment, check in Interaction Routing
Designer's Loading View that you have not loaded an IRD 7.x routing strategy on the same Route Point DN where
the built-in strategy is loaded. This will create a conflict and cause your SCXML application not to launch.
Stream_Manager
Perform these steps in Configuration Manager or Genesys Administrator if using Stream Manager to play
treatments via the Composer treatment blocks (such as PlaySound). After installing Stream Manager as described
in the Framework 7.6 Stream Manager Deployment Guide:
1. Set up a SIP <Switching Office and a SIP Switch.
2. Set up a SIP T-Server with an association to the SIP Switch.
3. For your SIP T-Server, ensure that the sip-port option under the TServer section is unique in your environment.
4. Make sure there is a connection between your SIP T-Server and Stream Manager.
5. For Stream Manager options, in the contact section, make sure the SIP port is unique in your environment.
6. On your SIP Switch, create a DN of type Voice over IP Service to enable Stream Manager to properly play the
treatments. For information on Stream Manager and the Voice over IP Server type DN, refer to the Voice Platform
Solution 8.1 Integration Guide.
7. In the Annex tab of this DN, add a section called TServer with the following options:
• Name: contact, Value: :<IP Address of Stream Manager>:<SIP Port of Stream Manager>
• Name: service-type, Value: treatment
Optional
8. You may also need a DN of type Trunk for your SIP softphone. In the Annex tab, add a section called TServer.
• Name: contact, Value:<IP address of where SIP softphone is running>
Composer Help
498
Routing Applications and Workflows
Defining Preferences
You can configure Preferences for SCXML-based routing applications now or later.
ORS_Debugger
You can configure Preferences for the ORS Debugger now or later. To set ORS Debugger preferences:
1. Select Window > Preferences, then expand Composer and select Debugging.
2. Specify the following settings:
• Network Interface. Composer debugging uses this setting to make the socket connection for the
Debugger control channel. Select the interface that is applicable to your scenario. The debugging server
(GVP or ORS) must be able to access the Tomcat server, bundled as part of Composer, for fetching the
Voice or Routing application pages. If you have multiple NIC cards of multiple networks (such as
Wireless and LAN) select the interface on which GVP or ORS will communicate to your desktop. In case
you are connected over VPN, select the VPN interface (such as PPP if connected via a Windows VPN
connection).
• Enter the Name, Display Name, and IP Addresses.
• Client Port Range. Enter a port range to be used for connection to ORS for SCXML debugging sessions.
3. Expand Debugging, select ORS Debugger, and specify the fields below. You can change this information when
creating a launch configuration.
• ORS Server Host Name. Enter the IP address for the ORS Server.
• ORS Server Port. Enter the debugger port for the ORS Server.This is defined in the ORS configuration
as [scxml]:debug-port, and defaults to 7999. ORS must have debug-enabled set to true.
Note: New launch configurations are pre-populated with the above host name and port information, which can be
changed.
• Use Secure Connections. Check to enable secure communications (SSL/TLS) between the Composer
client and ORS, for SCXML debugging sessions. The connection between Composer and ORS is
mutually-authenticated TLS if implemented on the ORS side. Note: As of the Composer 8.1.1 release
date, this feature is not yet implemented on the ORS side.
Composer Help
499
Routing Applications and Workflows
Upgrading Workflows
Upgrading Projects and Diagrams
See topic Upgrading Projects and Diagrams.
Upgrading Workflows Prior to 8.0.4
Some previously created workflow diagrams cannot be upgraded:
• Composer 8.0.2 began support for the creation and testing of SCXML-based workflows for inbound voice use cases.
Upgrading workflow diagrams created in the 8.0.2 release of Composer, which introduced this new feature, is
therefore not supported.
• Composer 8.0.3 began support for the Context Services option of the Universal Contact Server Database and the
processing of multimedia interactions. This release also introduced interaction process diagrams, which are roughly
the equivalent of IRD business processes. Upgrading workflow diagrams created in the 8.0.3 release of Composer,
which introduced these new features, is therefore not supported.
Migrating IRD Strategies into Composer Projects
Starting with Composer 8.1, you can migrate routing strategies created with Interaction Routing Designer 8.0+ into
Composer Projects as SCXML-based workflow diagrams. For more information, see the IRD to Composer Migration
Guide.
Composer Help
500
Preferences for Routing Applications
Preferences for Routing Applications
Composer preferences apply to all Projects within the workspace. To open the Preferences dialog box, select
Window > Preferences. You can set preferences for the following:
• Business Rules
• Composer Diagram
• Configuration Server
• Context Services
• Customizer
• ORS Debugger
• GAX Server
• Help
• ISS .NET Preferences
• Orchestration Server Options
• Orchestration Server Preferences
• Time Zone
• Tomcat
• SCXML File
• Security
• XML Preferences
Tip
You can also set options in the Project Properties dialog box. Right-click a Project and select
Properties
Composer Help
501
Preferences for Routing Applications
Business Rule Preferences
See Business Rule Preferences in Business Rule Common block.
Composer Help
502
Preferences for Routing Applications
Configuration Server Preferences
To set preferences for connecting to Configuration Server:
1. Select Window > Preferences > Composer > Configuration Server.
2. Select or clear the check box for Connect to the Configuration Server on startup.
3. Select or clear the check box for Create Router predefined statistics when connecting to Configuration Server.
Set this preferences if you plan to route based on the value of a URS predefined statistic. For more information on
URS predefined statistics, see the chapter on routing statistics in the Universal Routing 8.1 Reference Manual.
3. Select or clear the check box for Validate Skill Expressions. You have the option of clearing the check box when using
complex skill expressions that use both literal expressions and variables, for which skill expression validation fails.
4. Specify Configuration Database object validation:
• No validation. You may wish to select this option if objects that will used in routing have not yet been
configured.You may also wish to select this option if you do not have the required Configuration
Database permission as described in the Genesys Security Deployment Guide. For the Configuration
Database, permissions and security are defined in the Security tab of the properties dialog box in
Configuration Manager or (for web access) Genesys Administrator. The No Validation setting also allows
application development to continue when access to Configuration Server is not currently available.
Composer can still validate strategies with the Configuration Server items excluded.
• Validate if connected. If you will not always be connected to Configuration Server, you may wish to
select this option.
• Validate. Select to have Composer validate that the objects exist in the Configuration Database.
5. Published interaction process diagram when it is saved.If checked, Composer will publish an interaction process
diagram when it is saved. It will not publish or prompt to connect to Configuration Server if disconnected. Note: This
auto-publish does not display a message when publishing is successful. However, it will display message if publishing
fails.
6. Check or uncheck Prompt to save before Publishing Interaction Process Diagram.
7. uncheck Delete published objects when Interaction Process Diagram is deleted.
8. uncheck Delete published objects when Project is closed or deleted.
9. Set the Inactivity Timeout preference to have Composer automatically close the Configuration Server connection
when the user does not interact with Composer in any way for the inactivity-timeout period as described in the
Inactivity Timeout chapter of the Genesys Security Deployment Guide. Composer displays a warning dialog two
minutes in advance of this time. By default, the inactivity timeout is to be set to 0 (turned off).
10. Keep the Fetch Timeout (sec) value to use the Composer default of 10 seconds. If configured, the Fetch Timeout
value will be used as the timeout for fetching to Configuration Server queries. While fetching larger amounts of data,
set the Fetch Timeout value accordingly. Note: Any change in the Fetch Timeout value requires a re-connection to
Configuration Server.
Composer Help
503
Preferences for Routing Applications
Diagram Preferences
Select Window> Preferences > Composer > Composer Diagram. The following preferences for diagrams can be
set in the Preferences dialog box:
Global Settings
1. Select or clear the check box for each of the following diagram global settings:
• Show Connection Ports. If enabled, connection ports (both exception ports and out ports) are always
displayed on blocks. This makes it convenient to draw links between blocks and to get immediate
feedback on how many ports each block provides. However, in this case, the ability to reposition
connections on a block is not available. If switched off, connection ports are not displayed by default, but
repositioning or finer control over connection link placement becomes available. Note: This preference
applies to all projects and is not available for individual projects.)
• Show popup bars. If enabled, this setting displays basic blocks from the blocks palette in a pop-up bar if
you hover your mouse on the diagram for one or two seconds without clicking. Note: blocks are shown in
icon view only.)
• Enable animated layout. If enabled, causes diagrams to gradually animate to their location when the
Diagram \> Arrange \> Arrange All menu option is clicked.
• Enable animated zoom. If enabled, while using the zoom tools, shows a gradual transition between the
initial and final state of the diagram on the canvas. If off, the zoom is instantaneous. Similar behavior for
animated layout when the Diagram \>\> Arrange \>\> Arrange All menu option is clicked.
• Enable anti-aliasing. If enabled, improves the appearance of curved shapes in the diagram. You can
see its effect on the circles in the Entry and Exit blocks.
• Show CodeGen success message. If unchecked, then the confirmation dialog at the completion of code
generation will not be shown.)
• Prompt to Save Before Generating Code. If checked, when you generate code for an unsaved diagram,
a prompt appears indicating the diagram has been modified and asking if you want to save the changes
before generating code. The dialog box also contains a checkbox: Automatically save when generating
code and do not show this message again.
• Show Validation success message. If unchecked, then the confirmation dialog at the time of Validation
will not be shown.)
• Enable Validation for Prompt Resources. This preference is used for voice applications. If unchecked,
then a validation check for missing prompts is not performed at the time of Validation.
• Interaction Process Diagram. If unchecked, Composer will save Interaction Process Diagrams before
publishing.
• Prompt to delete Published objects when Interaction Process Diagram is deleted. If unchecked,
Composer will attempt to delete any Published objects when an Interaction Process Diagram is deleted. If
Composer is not connected to Configuration Server, object deletion will not work.
• Parameters auto synchronization (available starting with 8.1.410.14). This option reduces developer
coding time by enabling Composer to automatically declare variables in a Main diagram to match input/
Composer Help
504
Preferences for Routing Applications
output variable names in Subdialog block/Subroutine diagrams and to automatically perform the
mapping. This feature is available for both user and system variables. For example, if a Subroutine
diagram returns a variable called “xyz” and if Composer automatically declares “xyz” in the Main diagram
to hold the output, then you do not have to manually do the mapping. If enabled, you are prompted for
auto-synchronization whenever there is a need to change parameters names or add new variables in the
dialogs.
Scenarios:
1. Subdialog or Subroutine Diagram: Entry Block—The auto-synchronization process will synchronize
any newly added/updated variables and existing variables in the Subdiagram. If you add a new Input
type variable, a prompt appears asking whether to add a corresponding Input parameter. You are
also prompted to select or add the Input source variable in all the called Subroutine diagrams. New
parameter naming in the calling Subdialog block is the same as the Input variable added in the Entry
Block. If the Subroutine diagram is called from many diagrams, Composer provides a variable
selection option for the called diagrams.
2. Main callflow Diagram: Entry Block—If you add a new Input type variable, a prompt appears asking
whether to add the corresponding input parameter. You are also prompted to select or add an Input
source variable in all the called Play Application blocks. New Parameter naming in the calling Play
Application block is the same as the Input variable added in the Entry Block. If the Main diagram was
called from multiple Play Application blocks, a variable selection option for all the called blocks is
provided.
3. Subdialog or Subroutine diagram: Exit Block—If you change or delete a return parameter, a prompt
appears on whether to delete the Output parameter and/or the missing ones in case of a change in
all the called Subroutine or Subcallflow diagrams.
4. The auto-synchronization parameter option also applies when there is a change in a configured
Subroutine diagram. The auto-synchronization dialog confirmation appears as soon as a Subroutine
diagram is added/updated. If the confirmation dialog is selected, it automatically synchronizes the
Subroutine parameters to the Main diagram. This auto-synchronization prompt always appear even
though the same diagram is updated again. When Output parameters are added in the Exit block,
parameter synchronization also occurs.
5. Application URL for Publish and Debugging. Select Use IP Address or Use Host Name.
Notes:
Composer creates unique names for auto-sync variables, such as <SubBlockName>_<VariableName>. SubBlockName is the name
of the Subroutine/ Subdialog / Play Application blocks where the Subroutine diagram is being invoked. VariableName is the input
variable name created in a Subroutine diagram.
2. Click Apply.
Colors and Fonts
1. Select Appearance under Composer Diagram.
2. Click Change and make selections to change the default font if you wish.
3. Click the appropriate color icon beside any of the following and make selections to change color:
• Font color
• Fill color
Composer Help
505
Preferences for Routing Applications
• Line color
• Note fill color
• Note line color
4. Click Apply.
Connections
1. Select Connections under Composer Diagram.
2. Select a line style from the drop-down list:
• Oblique
• Rectilinear
3. Click Apply.
Pathmaps
1. Select Pathmaps under Composer Diagram.
2. Click New to add a path variable to use in modeling artifacts, or If the list is populated, select the check box of a path
variable in the list.
3. Click Apply.
Printing
1. Select Printing under Composer Diagram.
2. Select Portrait or Landscape orientation.
3. Select units of Inches or Millimetres.
4. Select a paper size (default is Letter).
5. Select a width and height (for inches, defaults are 8.5 and 11; formillimeters, defaults are 215.9 and 279.4).
6. Select top, left, bottom, and right margin settings (for inches, defaults are 0.5; for millimeters, defaults are 12.7).
7. Click Apply
Rulers and Grid
You can make use of rulers and grids when creating diagrams. Rulers and grids can provide a backdrop to assist
you in aligning and organizing the elements of your callflow diagrams.
Composer Help
506
Preferences for Routing Applications
1. Select Rulers and Grid under Studio Diagram.
2. Select or clear the Show rulers for new diagram check box (not selected by default).
3. Select ruler units from the drop-down list:
• Inches
• Centimeters
• Pixels
4. Select or clear the Show grid for new diagrams check box (not selected by default).
5. Select or clear the Snap to grid for new diagrams check box (selected by default).
6. Type a value for grid spacing (for inches, the default is 0.125; for centimeters, the default is 0.318; for pixels, the
default is 12.019).
7. Click Apply.
Composer Help
507
Preferences for Routing Applications
Setting Context Services Preferences
Go to Window > Preferences > Composer > Context Services to open the Context Services dialog box. If using
a Composer version prior to 8.1.440.18, the dialog box will not contain a Service management section.
Composer Help
508
Preferences for Routing Applications
Composer Help
509
Preferences for Routing Applications
Guidelines for Context Services Preferences
[+] Guidelines for Context Services Preferences
The table below supplies some guidelines for defining Context Services Preferences.
Installation Type
Customer Profile Management
Service Management
Context Services 8.1 or earlier Profile and Service APIs served by
UCS
Set UCS parameters according to
UCS options.
Do not check the Use Genesys
Mobile Service checkbox. Set the
UCS parameters according to UCS
options.
Context Services 8.5 or later - No
Load Balancer
Set UCS parameters according to
UCS options.
Check the Use Genesys Mobile
Service checkbox. Set GMS
parameters according to GMS
options.
Context Services 8.5 or later - Load
Balancer (LB)
Set UCS parameters to match the LB
options.
Check the Use Genesys Mobile
Service checkbox. Set GMS
parameters to match the LB options.
Customer Profile Management Section
1. Use the Guidelines for Context Services Preferences section above for selecting/unselecting the Connect to
Universal Contact Server when designing diagrams box.
2. Under Server Host Name, enter the server host IP address in your Configuration Database, which identifies the
Universal Contact Server. See Tip below.
3. Enter the Server Port number for Universal Contact Server. For the port number, open the Universal Contact Server
Application object in your Configuration Database, go to Options tab, select the cview section, and the port
option.
4. Enter the Base URL for the Context Services server. This should only be configured if you use UCS 8.1. Do not set if
you use UCS 8.5.
5. Under Security Settings, Use secure connection, select Never or TLS if Transport Layer Security is implemented
as described in the Genesys 8.1 Security Deployment Guide.
6. Select Use Authentication to require a user name and password when connecting to Universal Contact Server. If
selected, enter the User and Password fields.
7. Click the Test Connection button (enabled if the Connect to Universal Contact Server when design diagrams box
is checked). Clicking should cause connection successful to appear. If not, check that Universal Contact Server is
running and that the entered host/port values are correct. Other sources of error could be that the base URL
parameter value is incorrect or the UCS version is not 8.1 or higher.
8. Under Context Services object Validation, select one of the following: No validation, Validate if connected, or
Validate. This setting is used and shared by the Profile/Service blocks.
Composer Help
510
Preferences for Routing Applications
Tip
Host/port/URL/tenant are used at design time by Composer (when the Connect to Universal
Contact Server when designing diagrams box is selected). They are also used by Composer
when publishing an interaction process diagram. Composer stores these parameters in the
EnhancedRoutingScript objects. SCXML applications can then read those settings at runtime
to connect to UCS/GMS accordingly.
Service Management Section
1. Select either Use Genesys Mobile Services or Connect to the Universal Contact Server when designing
diagrams. See Guidelines for Context Services Preferences section above for more information. Steps 2, 3, and 4
below relate to UCS or GMS, depending on the Use Genesys Mobile Services box.
2. Under Server Host Name, enter the host IP address. See above note (Tip).
3. Enter the server port number.
4. Enter the Base URL for the host. When using GMS, the base URL is normally /genesys/1/cs.
5. Enter the Tenant. GMS Context Services (optionally) supports multi-tenancy. The tenant to use is passed as a header
(ContactCenterId=x) of the request. This field is disabled when Connect to the Universal Contact Server when
designing diagrams is selected.
6. Under Security Settings, Use secure connection, select Never or TLS if Transport Layer Security is implemented
as described in the Genesys 8.1 Security Deployment Guide.
7. Select Use authentication to require a user name and password. If selected, enter the User and Password fields.
8. Click the Test Connection button. Clicking should cause connection successful to appear. When using GMS, no
connection is made from Composer to GMS. Connections to GMS are initiated only at runtime by ORS/MCP.
9. Under Context Services object Validation, select one of the following: No validation, Validate if connected, or
Validate. This setting and the setting below is used and shared by the Profile/Service blocks.
10. Under Local Settings, select the time zone.
Tip
Composer can successfully communicate with UCS at design stage whatever the UCS mode is
(production or maintenance). However, UCS needs to be in production mode at runtime stage
(when running Context Services SCXML or VXML applications, even when using GVP Debugger).
Composer Help
511
Preferences for Routing Applications
Customizer Preferences
To bring up Customizer Preferences:
1. Click the Window menu.
2. Select Preferences.
3. Expand Composer.
4. Select Customizer Preferences. The Customizer Preferences dialog box opens. The Callflow Diagram Editor and
Workflow Diagram Editor customization plug-ins are display only and can be used for debugging.
The Customizer
Preferences dialog box:
• Reports on the location of the storage area (cstore directory) on disk. Diagrams that you save as templates are
stored here.
• Lists registered plug-ins as shown in the Customization Manager view.
• Allows you to suppress confirmation dialogs associated with plug-ins. If checked, it suppresses the success/failure
indicator message when you save a diagram as a template.
Composer Help
512
Preferences for Routing Applications
ORS Debugger Preferences
Select Window > Preferences > Composer > Debugging > ORS Debugger. ORS Debugger preferences are
usually set during post-Installation configuration, when you first run Composer. A Debugger Cheat Sheet (Help
> Cheat Sheets > Composer > Routing Applications) also provides detailed configuration instructions.
Composer Help
513
Preferences for Routing Applications
GAX Server Preferences
Select Window > Preferences > Composer > GAX Server.
If using the OPM Block for a voice or routing application, you must set GAX Server Preferences.
Tip
GAX refers to a Genesys Administrator Extension (GAX) plug-in application used by Genesys
EZPulse, which is accessible from a web browser. EZPulse enables at-a-glance views of contact
center real-time statistics in the GAX user interface. Composer diagrams connect to GAX using
the preference login credentials for fetching the Audio Resource Management (ARM) parameters
or IDs list configured for the tenant as described in the Configuration options appendix of the
Genesys Administrator Extension Deployment Guide.
The following preferences can be set in the GAX Server Preferences dialog box:
• Server Host Name/IP. Enter the hostname or address of the Application server hosting the GAX Server.
• Port Number. Enter the port number for the GAX Server used in your environment.
• Username. Enter the username defined in the Configuration Database for logging into the GAX server.
• Password. Enter the password defined in the Configuration Database for logging into the GAX server.
Composer Help
514
Preferences for Routing Applications
Help Preferences
Window > Preferences > Composer > Help
The resulting page contains a link to the online Composer help wiki. For example:
http://docs.genesys.com/?title=Special:ComposerHelp&keyword={keyword}&locale={locale}&version={version}
Composer Help
515
Preferences for Routing Applications
IIS.NET Preferences
Select Window > Preferences > Composer > IIS/.NET.
IIS/.NET preferences are usually set during post-installation configuration, when you first run Composer. Detailed
post-installation configuration instructions are provided in the Setting IIS Preferences Cheat Sheet (Help > Cheat
Sheets > Composer > Building Voice Applications), and also in Post-Installation Configuration.
Composer Help
516
Preferences for Routing Applications
Orchestration Preferences
Select Window > Preferences > Composer > Orchestration Server. Enter the Orchestration Server Load
Balancer URL.
Also see:
• Orchestration Options
• Orchestration Extensions
Composer Help
517
Preferences for Routing Applications
Orchestration Options
Using Composer, you can create Routing applications for the Genesys Orchestration Platform 8.x (ORS)—which
takes the Genesys core capability of routing, extends it, and integrates it tightly with other Genesys products.
There are two ways to view Orchestration Server options:
1. Right-click a Project and selecting Properties.
2. When a Project is selected, click the Properties menu and select Properties.
In the resulting dialog, select Orchestration Options. The options are:
• Use External Events
• Start Workflow SCXML application on interaction.onrouterequest event (described below)
• Use Single GVP Session to Execute Treatments
• Use Interaction Submitters
• Interaction Detach
Composer Help
518
Preferences for Routing Applications
Also see:
• Orchestsration Preferences
• Orchestration Extensions
Start Workflow SCXML application on interaction.onrouterequest Event
Starting with 8.1.400.37, Composer adds a Project-level option, Start Workflow SCXML application on
interaction.onrouterequest event, that you can use to control the start of a workflow SCXML application. If
enabled, an interaction process diagram will start the workflow diagram SCXML upon receiving the
interaction.onrouterequest event for voice interactions. If this option is not enabled, Composer will use the
interaction.added event for regular voice calls and the interaction.attach.done event for consult calls.
To change this option, you must generate code for all the interaction process diagram files in a Project. By default,
this option is not enabled. As result, older applications will continue to start the workflow diagram SCXML upon
Composer Help
519
Preferences for Routing Applications
receiving the interaction.added event. This option should not be enabled for multimedia (non-voice)
interactions. Composer also adds the interaction.onrouterequest event to the default set of voice event
handlers.
Composer Help
520
Preferences for Routing Applications
Orchestration Extensions
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property. Use this property to add custom attributes into any/all
states and sub-states for any block they are configured in. Add the ORS Extensions property to the Properties view
for a selected block by clicking the Show Advanced Properties button.
Show Advanced Properties
When creating a new diagram in Composer perspective, this button appears on the right side of the Composer GUI,
between the palette of blocks and the Properties view.
This property gives the ability to use any attribute Orchestration Server supports in addition to the SCXML standard.
For information on these attributes, see the attributes prefixed with "_" in the SCXML Elements section of the
Orchestration Server Developer's Guide. For example, you can specify additional attributes to be added into the
SCXML <state> element, which Orchestration Server can then use to control persistence on a <state> level and for
other functionality in the future.
Orchestration Options
Selecting Properties from the Project menu opens a dialog box showing the properties of the selected Project or
of the Project that contains the selected resource. Select Orchestration Options to view other settings.
Composer Help
521
Preferences for Routing Applications
Detaching Interactions
Starting with Release 8.1.400.35, Composer adds a new Project properties option, Interaction Detach, in the
Orchestration Options dialog (shown below), which can generate the detach attribute in the ixn:redirect tag in
the following Routing blocks: (Default Route, Force Route, Queue Interaction, Route Interaction, Routing Rule, and
Target).
Selecting Use Platform in the dialog sets the attribute value to true and instructs Orchestration Server to detach
an interaction from the current session before routing to the specified target, which can free Orchestration Server to
start processing the next session. Keeping the default of Use Application causes the detach attribute not to be
used, in which case the <ixn:detach> tag will be used by the generated SCXML application.
Notes:
• Previously created Projects upgraded to this version will have the Use Application detach option and generate the
<ixn:detach> tag for the detach operation. Also, the default value of the Detach property for the above Routing
blocks is changed to true.
• Any new Routing blocks added will have the Detach Property default set to true.
• Diagrams upgraded to this version will continue to have the previously set values for the Detach property.
You can specify the detach method at the Composer level, at the Project level, or at the Block level.
Composer Level
Use the Detach and Attach blocks available from the Flow Control palette group.
Project Level
Right-click a Project, select Properties > Orchestration Options. The dialog box below opens.
Composer Help
522
Preferences for Routing Applications
Under Interaction Detach, the options are Use Platform or Use Application.
[+] Use Platform
Interaction Detach = Use Platform (default value for new Projects)
If Use Platform is selected, Composer will generate the new detach attribute in the <ixn:redirect> tag in the
above Routing blocks that have the Detach property enabled.
<state id="_reserved_Target1_redirect">
<onentry>
<ixn:redirect detach="true" requestid="App_Target1['requestid']" interactionid="system.InteractionID" fr
to="App_Target1['targetResource']" type="_genesys.queue.rType.RouteTypeDefault" hints="_data.All_Locatio
</onentry>
<transition event="interaction.redirect.done" cond="_event.data.requestid==App_Target1['requestid'])" targe
"$$_MY_PREFIX_$$._reserved_NextBlock"/>
</state>
Composer Help
523
Preferences for Routing Applications
eServices Blocks and Use Platform
Use Platform in SCXML code generation is applicable only for blocks that use the <ixn:redirect> tag. The
following eServices blocks do not use <ixn:redirect> tag and therefore cannot use the Use Platform option
shown above: Chat Transcript, Create Email, Email Forward, Email Response, and Create SMS. You can still
change the default value for the Detach property in these blocks.
Event Handling
When enabling the Use Platform option, Composer-generated code for the Routing blocks with the Detach
property enabled will no longer handle detaching (<ixn:detach>) the interaction and re-attaching (<ixn:attach>)
the interaction after a failed <ixn:redirect>.
The following events will no longer be handled by the generated code for these blocks:
interaction.detach.done and interaction.attach.done.
Starting with 8144, Composer validates error.interaction.attach and error.interaction.detach
exceptions in the Detachable blocks. If Platform Detach is enabled, the Detachable blocks having the above
said exceptions will throw a warning.
The interaction.deleted event will be discarded at the application level (interaction process dialog Events)
when its resultof attribute value is detaching in order to prevent premature application termination. As a result,
application developers are no longer be required to handle the interaction.deleted event in multiple places
when detaching interactions.
[+] Use Application
Interaction Detach = Use Application (default value for upgraded Projects)
If Use Application is selected, Composer will continue to generate the <ixn:detach> tag to detach interactions,
in addition to the <ixn:redirect> tag.
<state id="_reserved_Target1_detach_run">
<onentry>
<ixn:detach interactionid="system.InteractionID" requestid="App_Target1['requestid']"/>
</onentry>
<transition event="interaction.detach.done" cond="_event.data.requestid==App_Target1['requestid'])" target="
</state>
<state id="_reserved_Target1_redirect">
<onentry>
<!-- NO detach attribute attribute usage. This code must run on ORS without in-redirect detach support <ixn:redirect requestid="App_Target1['requestid']" interactionid="system.InteractionID" from="system.Thi
</onentry>
<transition event="interaction.redirect.done" cond="_event.data.requestid==App_Target1['requestid'])" targe
<transition event="error.interaction.detach" cond="_event.data.requestid==App_Target1['requestid'])" target=
<script>
App_Target1['error.rethrow'] = {'name':_event.name,params:{'requestid':_event.data.requestid,'error'
</script>
</transition>
</state>
<state id="_reserved_Target1_attach">
Composer Help
524
Preferences for Routing Applications
<onentry>
<ixn:attach interactionid="system.InteractionID" requestid="App_Target1['requestid']"/>
</onentry>
<transition event="interaction.attach.done" cond="_event.data.requestid==App_Target1['requestid'])" target="
<!-- re-throw original error.interaction.redirect for the application -->
<script>
__Raise('error.interaction.redirect', App_Target1['error.rethrow'].params);
</script>
</transition>
</state>
Block Level
If the Detach property is set to true for the above Routing blocks, Orchestration Server uses the new detach
attribute and the interaction is detached from the session before routing to the specified target.
If the Detach property value is set to false (default), then no detach occurs before routing.
If the Target block Route property = true, then code generation will detach the interaction before queue:submit
since the Orchestration Platform will redirect after queue:submit. This is applicable for both Use Platform and
Use Application under Interaction Detach.
Inter-Session Communication
Composer-generated applications support passing context from the source application session to the destination
application session when the interaction is associated with a new Orchestration session after a detaching operation
in the originating Orchestration session. This allows the new application that runs in the new session to access data
(variables) previously collected in the originating session.
This feature is controlled by properties Pass Context, Pass Context Timeout of detachable blocks in the originating
Orchestration session, and by properties Read Context, Read Context Timeout of the destination interaction
process diagram (IPD).
To support this feature, the Composer originating application writes some data to the interaction user data just
before detaching the interaction. When enabling the Use Platform option, this user data update must be done right
before the <ixn:redirect>.
Composer Help
525
Preferences for Routing Applications
SCXML File Preferences
To set SCXML file preferences:
1. Select Window > Preferences > Composer > SCXML Files.
2. Select the suffix that Composer should add to SCXML files. The default is scxml.
3. Select the encoding for the file. The encoding attribute in an SCXML document specifies the encoding scheme. The
encoding scheme is the standard character set of a language. The SCXML processor uses this encoding information
to know how to work with the data contained in the SCXML document. UTF-8 is the standard character set used to
create pages written in English. Select from the following:
• ISO 10646/Unicode(UTF-16LE) Little Endian
• US ASCII
• ISO Latin-1
• Central/East European (Slavic)
• Southern European
• Arabic, Logical
• Arabic
• Chinese, National Standard
• Traditional Chinese, Big5
• Cyrillic, ISO-8859-4
• Cyrillic, ISO-8859-5
• Greek
• Hebrew, Visual
• Hebrew
• Japanese, EUC-JP
• Japanese, ISO 2022
• Japanese, Shift-JIS
• Japanese, Windows-31J
• Korean, EUC-KR
• Korean, ISO 2022
• Thai, TISI
• Turkish
4. Check the box to warn if no grammar is specified when validating SCXML files (not selected by default).
5. Click SCXML Templates.
Composer Help
526
Preferences for Routing Applications
SCXML Templates
Composer provides a set of predefined templates when writing SCXML code to create routing strategies. You can
either start off from scratch in the SCXML editor or use one of the available templates as a starting point. Use this
preference to create, edit, or remove templates as well as to import and export templates.
1. Select Window > Preferences > Composer > SCXML Templates.
2. In the resulting Templates dialog box, do one of the following:
• To create a new template click New... The New Template dialog box opens for naming and describing the
new template.
• To edit an existing template, select its row and then click Edit...The Edit Template dialog box opens for
editing.
• To remove a template, select its row and click Remove. If you change your mind, click Restore
Removed,
• To import a template, click the Import... button, navigate to the folder containing the SCXML file, select
the file, and click Open.
• To export one or more templates, select the row(s) and click the Export... button. In the Export Templates
window, click the target location and click Save.
• If you change your mind after editing a predefined template, click Restore Defaults.
3. Click Source.
Source
Source preferences are based on the XML Editor preferences. See that topic for more information.
Syntax Coloring
Syntax coloring preferences are based on the XML Editor preferences. See that topic for more information.
Composer Help
527
Preferences for Routing Applications
Security Preferences
Use the Security preferences page to specify the location of the Trust Store that holds security certificates.
Window > Preferences > Composer > Security
The certificates are used, for example, when Composer connects to Universal Contact Server with a secured
connection. By default, Composer uses the Java Runtime Environment (jre) Trust Store. The default password for
the Trust Store is changeit.
Composer Help
528
Preferences for Routing Applications
Tomcat Preferences
Select Window > Preferences > Composer > Tomcat Tomcat preferences are usually set during post-installation
configuration, when you first run Composer. Detailed post-installation configuration instructions are provided in the
Configure Tomcat and Debugger Settings Cheat Sheet (Help > Cheat Sheets > Composer > Building Voice
Applications), and also in Callflow Post-Installation Configuration or Workflow Post Installation Configuration.
Composer Help
529
Introduction to Routing Workflows
Introduction to Routing Workflows
This section gives a high-level overview of creating SCXML-based routing strategies ("workflows") in Composer's
integrated development environment.
• What is a Routing Workflow
• Architecture Diagram for Workflows
• Workflow Example and Palette
• SCXML File Editor
• Sessions and Interactions
• Interaction Process Diagrams
Composer Help
530
Introduction to Routing Workflows
What is a Routing Workflow?
What is Routing?
In the simplest terms, routing is the process of sending an interaction to a target, for example, sending an incoming
telephone call to an agent. In practice, an interaction must undergo various types of processing between the time it
arrives at the contact center and the selection and routing to the appropriate target. Each processing-point is an
opportunity for some sort of processing to take place or for Universal Routing Server (URS) to make a decision
based on the current situation—with the goal of getting the interaction delivered to the most appropriate target.
What is a Routing Workflow?
A routing workflow is a set of decisions and instructions that tells Universal Routing Server how to handle and
where to direct interactions under different circumstances.
At any given processing-point in the workflow, only one of several possible outcomes can be optimal. Universal
Routing Server uses the workflow instructions to determine which outcome is optimal and sends the interaction
along a specified route accordingly.
There are various ways to create an SCXML-based workflow in Composer:
1. By working with blocks to create a workflow in Composer or Composer Design perspective.
2. By writing code in the Composer_Code_Editors (which may include using templates).
3. By importing an existing workflow.
Routing Blocks and Ports
Each processing-point is represented graphically in a workflow by a routing block, which has:
• One entry port
• One or more red exception ports
• One or more green exit ports.
The figure below shows how these ports appear for a block in Composer's workflow designer.
Composer Help
531
Introduction to Routing Workflows
Composer Help
532
Introduction to Routing Workflows
Architecture Diagram for Workflows
To give the "Big Picture" and show the various Genesys components used for SCXML-based workflows, below is a
high-level diagram of the Universal Routing 8.x architecture.
The SCXML-based strategy creation and processing steps above are keyed to the numbers below.
1. The developer specifies Configuration Server objects as routing targets prior to creating the routing application in
Composer. For example, a routing target could be an agent (Person object) or Agent Group or an interaction can be
sent to a queue. The developer may also create workflows that route based on the value of a Stat Server statistic or a
statistic that you defined in Composer's Statistics Builder.
2. The developer (or other persona) creates and tests the routing application and manually deploys it on a web
application server. Once this is done, the runtime life cycle of the routing logic can begin with a routing request.
3. URS gets an EventRouteRequest message from T-Server or another media server such as an eServices media
server.
4. The request goes to the Routing Point. URS gets the URL of the application server to be contacted about SCXML
strategy to be provided, which is a property of the Routing Point. After the URL is obtained, ORS issues the HTTP
GET ( or POST) request to the application server.
5. The application server executes the request and returns the SCXML document back to ORS.
6. Upon getting the response, ORS passes the received SCXML document to the SCXML engine. The SCXML engine
runs the SCXML application, invoking ORS/URS services as needed.
Composer Help
533
Introduction to Routing Workflows
7. ORS or URS issues a RequestRouteCall message to the media server.
Delivering an Interaction to Agent Desktop
Once ORS/URS identifies a routing target, other servers are involved in the process of delivering the interaction to
the agent desktop.
• In the case of voice interactions, SIP Servers /T-Servers are involved.
• In the case of PBX based architectures (not SIP servers), PBXes are involved (by the commands from T-Servers).
In summary:
Interaction Type
Target Identification
Deliver to Desktop
Multimedia
URS/ORS
Interaction Server > Media Server
Voice Over IP
URS/ORS
SIP Server (includes media control)
Old/PBX archiectures
URS/ORS
T-Server > PBX
Composer Help
534
Introduction to Routing Workflows
Workflow Example and Palette
The figure below shows an example routing workflow in Composer Design perspective.
As shown above, in Composer Design perspective, the palette of blocks appears on the left. When creating
workflows, you drag blocks from palette, drop them in the center canvas area, configure their properties in the lower
Properties tab, and connect them.
Composer Help
535
Introduction to Routing Workflows
SCXML File Editor
Composer also has an editor for those who like to write their own code. The figure below shows example strategy
code in Composer's SCXML editor.
• SCXML File Preferences control colors and other aspects of SCXML editing.
• For editing functionality, see Accessing the Editors and Templates.
Composer Help
536
Introduction to Routing Workflows
• For sample strategies, see Universal Routing 8.1 SCXML Strategy Samples.
Composer Help
537
Introduction to Routing Workflows
Sessions and Interactions
Orchestration Server introduces the concept of sessions. An understanding of these concepts is important to
effectively use Routing functionality in Composer. Please consult the Orchestration Server 8.1 Deployment Guide
for references to detailed technical information.
Composer generated SCXML applications make sure that an SCXML session is created whenever an interaction is
pulled from an Interaction Queue and presented to the SCXML application. This behavior applies to:
• All new interactions received by Orchestration platform.
• Interactions that have been placed in the interaction by an SCXML application.
• New interaction created by Orchestration platform as a result of an action (e.g., E-mail Response and Create SMS
blocks).
However, under certain circumstances, use of the SCXML State block or a hand-coded subroutine may result in a
new interaction being created. In such cases, special care must be taken to process the new interaction since the
default behavior is to take action on the original interaction that resulted in the session being created. One of the
following approaches is recommended in such cases.
• If the Interaction ID is not known, retrieve the Interaction ID from the _genesys.ixn.interactions[x].g_uid list.
• Place the new interaction in a different queue using the Queue Interaction block. When the interaction is presented to
the workflow connected to the queue, a new session is created, thereby all further actions are performed on the
presented interaction.
Composer Help
538
Introduction to Routing Workflows
Interaction Process Diagrams
What is an IPD?
An interaction process diagram (IPD) provides a high level view of how multimedia interactions flow through various
components like media servers, interaction queues, workbins, and workflows. An IPD is somewhat similar to a
Business Process in Interaction Routing Designer, but is SCXML-based, contains additional functionality and works
with Orchestration Server.
Starting SCXML Page
In addition, an IPD functions as the starting SCML page for both voice and multimedia interactions and results in
using the same session across the entire interaction process. It also updates objects in Configuration Server and
activates the linkages specified in the IPD.
• When used for voice interactions or interaction-less processing, an IPD contains a single Workflow block.
• When used for multimedia interactions, an IPD contains at least one and possibly multiple Media Server, Interaction
Queue, and Workflow blocks. The example shown below is available as a template (Routing After Sending
Autoresponse) when you create a new Project.
Composer Help
539
Introduction to Routing Workflows
An IPD used for multimedia interactions:
• Visually presents and directs the flow of interactions through various processing blocks (media servers, queues, and
workflows).
• Defines what happens to customer multimedia interactions from the point of arrival at your contact center to the point
of completion.
• Can implement the procedures used by agents, supervisors, quality assurance, and other personnel in your company
to accomplish your company's business objectives related to incoming multimedia interactions.
An IPD also enables visual configuration of the associated Configuration Server objects. When connected to
Configuration Server, you trigger the actual Configuration Database update by using Composer's Publish operation.
Publishing causes Composer to push out relevant subsets of the configuration information to Configuration Server.
Here platform components can query for the information and use it for processing interactions.
Composer Help
540
Introduction to Routing Workflows
SCXML File Creation
Composer expects IPDs (*.ixnprocess files) to be present in the Interaction Processes folder. This folder is
accessible from the Project Explorer. The code generation step creates SCXML files for the following types of
diagrams:
• Interaction process diagram: One SCXML file is created for:
• Each Interaction Queue block present in the diagram with the name IPD_<Diagram Name>_<Interaction Queue
Block name>.scxml (Multimedia interaction scenarios).
• Each Workflow block present in the diagram, that is not connected to an Interaction Queue block with the name
IPD_<Diagram Name>_<Workflow Block name>.scxml (voice or interaction-less scenarios). Each of these files
represents an entry point into this application and can be specified in the EnhancedRoutingScript object. This
Script object should never point directly to a workflow or sub-workflow SCXML file.
• Workflow diagram, sub-workflow diagram: Both types of files have the .workflow extension. Code generation creates
an SCXML file for each diagram with the same name as the diagram name.
The IPD SCXML file includes one or more workflow SCXML files which, in turn, can contain a hierarchy of subroutine SCXML files. Orchestration Server combines all these related files into a single document and then
executes the resulting combined SCXML document. Due to this reason, the line numbers mentioned in
Orchestration Server logs may not match the line numbers in individual Composer SCXML files. See the
Orchestration Server documentation for information on how to obtain access to this merged document.
Starting a New IPD
See Starting a New IPD when creating a routing application.
Executing an IPD
The following Genesys servers work together to execute an interaction processing diagram:
• For multimedia interactions, handles queue processing, delivery of interactions to selected resources, and invoking
multimedia services. For information on Interaction Server, start with the eServices/Multimedia 8.1 Deployment Guide.
• (ORS) interprets the top-level SCXML document created as a result of the interaction processing diagram. For
information on ORS, start with Orchestration Server 8.1 Deployment Guide.
• ORS provides the Genesys Functional Modules (Queue, Interaction, Voice Interaction, Dialog, Resource), which are
described in the Orchestration Server 8.1.3+ Developer's Guide.
ORS sends requests to Universal Routing Server, invoking actions from these modules based on its SCXML
interpretation. URS then determines available resources (which may be another queue or the final target, such as
an agent) where interactions can be delivered to and returns responses back to ORS with the resultant action
information.
Composer Help
541
Creating Routing Applications
Creating Routing Applications
This section describes how to create routing applications, both in the workflow designer and in the editor after
workflow post installation configuration.
• IPD Planning and Preparation
• IPD is Starting SCXML Page
• Creating a New Routing Project
• Creating the IPD
• Creating a New Workflow Diagram
• Using the SCXML Editor
• Using SCXML Templates
• Your First Routing Application
• Using URS Functions
Also see the video below on one way (out of many) to create a routing strategy. This video demonstrates the use
Composer's Project and diagram templates. To optimize viewing, use the video button at the bottom to expand to
full-screen.
Creating a Simple Routing Strategy
Link to video
Composer Help
542
Creating Routing Applications
IPD Planning & Preparation
This topic discusses preparation and planning for creating an interaction process diagram (IPD) that will process
multimedia interactions. An IPD for voice interactions contains only a single workflow block. When planning an IPD
for multimedia processing, start by considering the basic stages in the interaction life-cycle. You can then design an
IPD that encompasses all stages, just one stage, or multiple stages. This topic presents four basic stages, which
are especially applicable to e-mail processing, but could apply to other media types as well. The stages are:
1. Pre-Route
2. Route-to-Agent
3. Review
4. Pre-Send
Each stage is summarized below. Pre-Routing Stage The main activities in the pre-routing stage of e-mail handling
can potentially include:
• Determining whether an e-mail has already been processed by Genesys. This can be accomplished via the absence
or presence of an Interaction Subtype Business Attribute assigned by Interaction Server.
• Classifying e-mails based on content analysis, which can assign a category code. Once a category code is assigned to
an e-mail, you can configure other types of processing to occur based on the category code.
• Screening e-mails for certain words or patterns of words. Once a screening rule match occurs, you can configure other
types of processing based on the match.
• Sending an acknowledgement and/or automatic standard response to the customer originating the e-mail.
• Determining the agent (if any) who previously handled the interactions related to this service.
Route-to-Target Stage This may or may not be an agent target. For example, the e-mail may be:
• Sent to a queue for submittal to other routing strategies and further processing.
• Sent to a queue for failed interactions.
• Forwarded outside the contact center to an expert with the expectation of getting a response back.
• Redirected to another agent without the expectation of getting a response back.
• Routed to an agent target for construction of a response.
Review Stage The reviewer could be a manager, supervisor, or QA Person. You may want to have two different
types of quality assurance review:
• A supervisor review that checks the skills of the agent who constructed the response.
• An analysis that performs a sanity check; for example, to prevent sending out a bank account password in an
interaction or to screen interactions for inappropriate language.
Pre-Send Stage The cycle of going from queue to routing workflow to queue can continue until the interaction
reaches some final outbound queue. The pre-send stage performs last-minute quality checking and allows for
attaching additional information to interactions when needed.
Composer Help
543
Creating Routing Applications
IPD Preparation
This section summarizes the preparatory steps for creating an IPD prior to actually creating, configuring, and
placing blocks in Composer. It also describes the Configuration Database and Universal Contact Server Database
objects that must exist first so they can be selected from Composer blocks.
1. Determine the interaction life cycle at your contact center.
2. Determine the media server, which will be referenced by the Media Server block. Check that the required Endpoints
have been defined.
3. Determine which Composer blocks will be used in routing workflows reference by the Workflow block to perform the
various processing required at each stage of interaction processing as described in the IPD Planning topic.
4. For each interaction processing stage, assign a name to the required IPD.
5. If you plan on having multiple IPDs linked via workflows, name the queues that will connect the workflows contained
within each IPD.
6. Determine the selection criteria for extracting interactions from queues (Views property in the Interaction Queue block).
For example, you may wish to extract certain interaction types earlier than other interaction types.
7. Create the required Knowledge Manager objects, such as categories and standard responses. For more information,
see the eService/Multimedia 8.0 Knowledge Manager Help.
8. Create the required Configuration Manager/Genesys Administrator objects, such as media server Applications, Skills,
Persons, Agent Groups, Places, Place Groups, and Business Attributes, just to mention a few. For more information,
see the Framework 8.1 Configuration Manager Help.
9. Optionally, map Context Services attributes to Configuration Server Business Attributes. Once this is done, you can
select a Business Attribute DB ID for a value in many Context Services block fields.
10. Create the routing workflow(s) that will perform the specialized processing tasks, which will be referenced by Workflow
block(s).
Composer Help
544
Creating Routing Applications
Starting SCXML Page
The starting SCXML page for any Composer routing project is the SCXML page generated from an interaction
process diagram (IPD) and not the SCXML page generated from a workflow. IPD SCXML pages internally include
workflow SCXML pages. An IPD is therefore required for both voice and multimedia workflows. When an IPD
diagram is Published, Composer sets the URL of the starting SCXML page in the resultant Script object of type
Enhanced Routing.
When executing an IPD, the Orchestration Platform "merges" the IPD SCXML page and any included workflow
SCXML pages to create a single page and then executes that page.
Note: One Composer Project may contain multiple IPDs. Both Java Composer Projects and .NET Composer
Projects support IPDs.
Composer Help
545
Creating Routing Applications
Creating a New Project
When building any application in Composer, you first need to create a Project. A Project contains all the workflows
and other files for your application. It also automatically creates the required interaction process diagram. By
associating a callflow or workflow or other routing application with a Project, you enable Composer to manage all
the associated files and resources in the Project Explorer.
The information below describes creating a new Java Composer Project. For information on creating a new .NET
Composer Project, see Composer Project Types and Directories.
Creating a Project
Before creating a new Project, you may wish to review Your First Application DNIS Routing for the sample GVP
voice application, Hello World Sample.
To create a new Composer Project:
1. In the menu bar, click the Create a Java Composer Project button. Or click the button for a .NET Composer Project. Or
click the New button above the Project Explorer and select Composer > Composer > Projects.
2. In the Project dialog box, type a name for your Project.
3. If you want to save the Composer Project in your default workspace, select the Use default location check box. If not,
clear the check box, click Browse, and navigate to the location where you wish to store the Composer Project.
4. Select the Project type:
• Integrated Voice and Route. Select to create a Project that contains both callflows and workflows that
interact with each other; for example a routing strategy that invokes a GVP voice application.
For a video tutorial on an Intergrated Voice and Route Project, see Integrated Voice and Route
Application.
For more information on both voice and routing applications, see What is GVP and How Do Voice Apps
Work and What Is a Routing Strategy, respectively.
Note: This selection grayed out if you have not enabled Composer's routing functionality as described in
the Hiding File Types topic.
• Voice. Select to create a Project associated with the GVP 8.x. This type of Project may include callflows,
and related server-side files. For more information on this type of Project, see topic What is GVP and
How Do Voice Apps Work.
• Route. Select to create a Project associated with the URS 8.x SCXML Engine/Interpreter. For more
information on this type of Project, see topic, What Is a Routing Workflow. This selection grayed out if you
have not enabled Composer's routing functionality as described in the Hiding File Types topic.
5. Click Next.
6. If you want to use templates, expand the appropriate Project type category and select a template for your application.
Templates are sample applications for different purposes. If you want to start from scratch, choose the Blank Project
template and click Next.
7. Select the default locale and click Next.
Composer Help
546
Creating Routing Applications
8. Optional. If using the GVP ICM Adapter in a VoiceXML application, select the Enable ICM checkbox to enable
integration. When checked, ICM variables will be visible in the Entry block. See the ICM Interaction Data block for
more information.
9. Click Finish.
Composer now creates your new Project. Your new Project folder and its subfolders appear in the Project Explorer.
The canvas area shows default.ixprocess tab for the interaction process diagram.
Composer Help
547
Creating Routing Applications
Creating the IPD
Note: Composer automatically creates a default IPD as part of new Project creation. You can also create an IPD on
demand using the main toolbar button. This topic presents typical high-level steps for creating:
• IPDs for Voice Workflows
• IPDs for Multimedia Workflows
Notes:
• IPDs are not stored in Configuration Server. Your Workspace (Interaction Processes folder in Project Explorer) is the
only location where these diagrams exist (and, of course, in source control if enabled).
• If a Composer Project contains a folder at include/user, then any files with extension .js will be included in the
generated SCXML. This allows you to write custom ECMAScript and include it in the application.
Creating IPDs for Voice Workflows
An IPD for a voice workflow contains a single Workflow block. After creating a new Project (which automatically
creates an IPD with a Workflow block), the typical high level steps are as follows:
1. Click the default.ixprocess tab on the canvas that will contain the IPD.
Note: You can change the name of an interaction process diagram file by right-clicking the
file name in the Project Explorer and selecting Rename. This brings up a preview dialog.
After accepting the change, the default.ixprocess tab reflects the name change.
Composer Help
548
Creating Routing Applications
2. Double-click the Workflow block to display its properties in the Properties tab below.
3. Opposite Resource, click under Value to display the
button.
4. Click the
button to open the Select Resource dialog box and select the empty workflow diagram. If you have not
changed the name, this will be default.workflow.
Note: There is no need for a Media Server block or an Interaction Queue block when creating an IPD for a voice
workflow.
5. Click the default.workflow tab on the canvas as shown above and use the designer to develop your workflow diagram.
This includes saving and validating. For more information on developing a workflow, see the Example Diagram
section in the Creating a New Workflow topic.
6. Validate the code and Publish your IPD diagram.
7. Generate the code by selectingDiagram > Generate Code, or by clicking the Generate Code icon on the upper-right
of the Composer main window when the canvas is selected. Check the Problems tab for errors and fix any problems.
If code generation succeeds, click OK at the confirmation dialog box. The SCXML code is generated in the src-gen
folder. The generated file name in the src-gen folder will follow the format:
<ipd_diagram_name>_<workflow_block_name>.scxml Note: One file per voice/interaction-less (see Interaction ID)
workflow block will be generated.
8. Debug the workflows.
Composer Help
549
Creating Routing Applications
9. Deploy the Project.
Note: Composer Diagram Preferences includes the following:
• Prompt to Save before Publishing Interaction Process Diagram.
• Prompt to delete Published objects when Interaction Process Diagram is deleted.
Creating IPDs for Multimedia Workflows
After creating a new Project (which automatically creates an IPD with a Workflow block), the typical high level steps
for creating an IPD for multimedia interactions are as follows:
1. Click the default.ixprocess tab on the canvas that will contain the IPD.
2. Add a Media Server block that has at least one Endpoint defined to the canvas by double-clicking or dragging and
dropping. Configure the Media Server block properties in the Properties view.
3. Add an Interaction Queue block to the canvas by double-clicking or dragging and dropping. Configure the Interaction
Queue block properties in the Properties view. This includes defining at least one interaction queue view.
4. Connect the Media Server Endpoint to the Interaction Queue block.
5. Click the default.workflow tab and use the designer to develop your workflow diagram.
6. Click the default.ixprocess tab and open the Workflow block. Use the Resource property to point the workflow diagram
you just developed.
7. Connect the view from the Interaction Queue block to the Workflow block.
The subsequent steps of adding additional blocks to complete the IPD or linking IPDs with workflows are userdefined and reflect your company's business logic. This includes saving and validating. For example, you may
choose to continue processing interactions in this IPD by repeating the process of sending interactions from
workflows back to queues, using views to extract the interactions, and then sending the interactions for further
specialized processing by other workflows.
8. Validate the code and Publish your IPD diagram.
9. Generate the code for the IPD and workflow diagram All generated files go into the src-gen folder of the Project.
10. Click the tab on the canvas that contains the IPD and generate the code. The generated file name in the src-gen folder
will follow the format: <ipd_diagram_name>_<interactionqueue_block_name>.scxml
Note: One file will be generated for each interaction queue. Functionally these files will be equivalent. Generating
one file per queue makes it easier to configure the application URL manually. As the developer, you will know the
interaction queue you have submitted the interaction to and therefore can easily identify the correct SCXML page.
11. Debug the workflows.
12. Deploy the Project.
Manually execute any other configuration steps in Configuration Server using Genesys Administrator or
Configuration Manager. For example, you must hook up your mailbox to send e-mails to the new end point defined
in your e-mail server.
Composer Help
550
Creating Routing Applications
Generated Files
Multiple top level SCXML files are generated, one for each Interaction Queue connected to the Media Server block
Endpoints. This allows different start states and different sessions for different interactions pulled from different
Interaction Queues connected to the media servers. File names for the generated files use the following format:
• For IPDs that do not contain Interaction Queue blocks: IPD_<ipdname>_<Workflow block name>.scxml
• For IPDs that use interaction queues: IPD_<ipdname>_<InteractionQueue block name>.scxml
Each top level SCXML file for an IPD includes:
• All workflows (generated SCXML files) referred to by the Workflow blocks in the IPD.
• All workflows (generated SCXML files) referred to indirectly via Interaction Queues in other IPD’s.
The SCXML file inclusion in the top-level document is done using <xi:include>. The workflow file name without the
.scxml extension is used for the _prefix attribute.
Composer Help
551
Creating Routing Applications
Creating a New Workflow Diagram
Cheat Sheets
Composer provides a cheat sheet to walk you through the steps for building a routing strategy.
• In the Welcome Screen (Help > Welcome), click the Composer link and select the Create a Routing Strategy tutorial.
It will also describe the steps for how to simulate calls.
• If you are already inside the workbench, access the same cheat sheet from the Menu bar at the top by selecting Help
> Cheat Sheets > Composer > Routing Strategy.
Adding a Workflow Diagram to a Project
To add a new workflow diagram to an existing Composer Project:
1. Click the button on the main toolbar to create a new workflow .
• Or use the keyboard shortcut: Ctrl+Alt+R.
• Or select File > New > Workflow Diagram.
• Or right-click the Workflows folder in a Project and select New > Other > Workflow Diagram.
2. In the wizard, select the tab for the type of the workflow. There are two main types of workflows in Composer
represented by wizard tabs:
• Main Workflow: Used for the main application where the call will land or be transferred to from another
application.
• Subworkflow: Used for modularizing your applications. It is useful for structuring large applications into
manageable components.
3. Select either Main Workflow or Subworkflow.
4. Select the type of diagram.
5. Click Next.
6. Select the Project.
7. Click Finish.
8. Create the workflow. See Your First Application "DNIS Routing" on how to get started.
Note: The condition expression for event-related properties in interaction process (IPD) and workflow diagrams are
not XML-escaped when generating the SCXML code. For more information, see Troubleshooting ORS Compile
Errors and Non Escaped Special Charcters.
Composer Help
552
Creating Routing Applications
Using the SCXML Editor
The Composer SCXML editor is embedded/integrated within the user interface and are made available to you
whenever an .scxml file is created or accessed within Composer.
Creating a New Project
Follow the steps below after you have created a Project.
1. Switch to Composer perspective.
2. Click the File menu and select New > SCXML File. The Create New SCXML File dialog box opens.
3. Select the Project.
4. Name the file. You now have two choices:
• If you do not wish to use a template, click Finish.
• To use a template, click Next, Use SCXML Template, select the template, and click Finish.
The Workflows folder in the Project Explorer shows the name of the file under your Project. Composer displays the
SCXML Editor.
5. Create the code.
Open an Existing or Imported File
The SCXML editor also opens whenever you open an existing .scxml ile, whether previously created as described
above, or previously imported into Composer. Open an existing file as follows:
• Select File > Open File and navigate to the file to open, OR
Open a Project's src or src-gen folder in the Project Explorer, then double-click the file to open it in the editor.
Composer Help
553
Creating Routing Applications
Using SCXML Templates
To create a new SCXML file for an existing Project:
1. Select from the menu: File > New > Other
2. Select from Wizard: Composer > Other > SCXML file.
3. Select the Project name for the new file.
4. Type a file name for your new file and click Next. The Select SCXML Template dialog box opens. The Use SCXML
Template check box is selected.
5. Select a template to preview.
6. Click Finish. The SCXML editor opens with your new file.
Also see ProjectTemplates.
Composer Help
554
Creating Routing Applications
Your First Application: Routing Based on DNIS or
ANI
The steps below lead you through creating a simple routing strategy workflow for voice interactions. This workflow
routes incoming calls based on the number dialed by the customer (DNIS) English-speakers dial one number;
Spanish-speakers dial another number. Assume this number is attached to the interaction when it arrives at the
contact center.
Note: The same type of Composer configuration could also be used to route incoming calls based on the originating
phone number (ANI).
Starting the Workflow
After creating a new Project in Composer Design or Composer perspective:
1. Click the
button on the main toolbar to create a new workflow and continue with step 2. Alternatives:
• Select File > New > Workflow Diagram or select File > New > Other. In the New dialog box, expand
Composer > Diagrams. Select Workflow Diagram and click Next. Continue with step 2.
• Or use the keyboard shortcut: Ctrl+Alt+R and continue with step 2.
2. In the Main workflow tab, select Empty Diagram and click Next.
3. Select the parent Project.
4. Name the diagram (must have an extension of .workflow) and click Finish. The Workflows folder in the Project
Explorer shows the name of your diagram under your Project.
5. Select the Workflows folder in the Project you just created.
6. Build the diagram as described below.
Creating the Workflow Diagram
For general guidelines on placing, configuring, and connecting blocks, see the Using the Designer topic.
1. Connect to Configuration Server. You can also use the keyboard shortcut: Alt+I+C.
2. Create a new project called "DNIS_Routing."
3. Add the following blocks from the Palette to the canvas area: Entry, Branching, Target (add two), and Exit.
4. Use the ConnectionLinks to connect the Entry block to the Branching block.
Composer Help
555
Creating Routing Applications
Typically, you start by segmenting incoming interactions to take different paths in the workflow. For example, you
could segment by date, time of day, day of week, number dialed (DNIS), or originating number (ANI), just to
mention a few examples. You could also segment based on a logical expression that you create in Expression
Builder. You can use the Branching block for this purpose as described below.
1. Select the Branching block to cause the lower Properties tab to show the fields associated with the block. An
alternative method is to right-click the Branching block and select Show Properties View from the shortcut menu.
2. In the Properties tab, opposite theConditions field, click under the Value column. This brings up the
3. Click the
button.
button. This brings up the Branching Conditions dialog box.
4. In the Branching Conditions dialog box, select Add. Condition0 appears under Node Name.
5. Change Condition0 to 8004662809.
6. Click opposite 8004662809 under Expression. This brings up the
7. Click the
button.
button to bring up Expression Builder.
Using Expression Builder
We will now define two sample expressions in Expression Builder. In the case of the Branching block, the
expressions will define the branching conditions that will cause interactions to take different paths in the strategy.
1. Click the
button on the right to expand Expression Builder.
2. Expand Workflow variables followed by System.
3. Double-click DNIS. Expression Builder appears as shown below.
Composer Help
556
Creating Routing Applications
4. Continuing with this example, note that "DNIS" appears to appear under Expression field opposite 1. ANI and DNIS
correspond to URS functions getDNIS() and getANI(). These functions can be used in a call or workflow to read the
DNIS and ANI of the call. ANI is the originating phone number (user name of the calling SIP phone). DNIS is the
number that the user dialed (provisioned number for the application, or "dialog" if you're making the call through the
debugger).
5. Opposite Operators, click the button for the equal sign (=). data.DNIS= now appears under Expression field.
6. Type a single quote after the equal sign.
7. Type the 800 number. For this example, use 8004662809.
8. Type a single quote after the number. Expression field now shows data.DNIS='8004662809'.
9. Click the
button to validate the expression. No syntax error found appears above.
10. Click OK to close the Expression Builder dialog box and return to the Branching Conditions dialog box.
11. In the Branching Conditions dialog box, select Add. This time Condition1 appears under Node Name.
12. Change Condition1 to 8008361447.
Composer Help
557
Creating Routing Applications
13. Click opposite 8008361447 under Expression. This brings up the
14. Click the
button.
button to bring up Expression Builder.
15. Repeat the Expression Builder steps to add the second expression: DNIS='8008361447' and click OK. The
Branching Conditions dialog box now appears as shown below.
16. Click OK in the Branching Conditions dialog box. The Branching block now shows three ports.
• The second and third ports correspond to the conditions defined in the Expression Builder.
• As described ahead, the first port could be used for default routing or another purpose.
17. Connect the second port to the Target block below it.
18. Connect the third port to the Target block below it. The routing strategy diagram (8.0.3) now appears as shown below.
Composer Help
558
Creating Routing Applications
19. Save the diagram as it exists so far by selecting File > Save.
Target Selection
This section describes how to configure the Target blocks in our example strategy diagram. Targets refers to routing
target objects that exist in your Configuration Database. For example: Agent, Agent Group, ACD Queue, Place,
Place Group, Route Point, Skill, or Variable.
1. Click a Target block to cause the lower Properties tab to show fields. An alternative method is to right-click the block
and select Show Properties View from the shortcut menu.
2. In the Properties tab, opposite the Name property, type EnglishAgents. The name must start with an underscore or
a letter.
3. Click under Value opposite the Targets property to display the
4. Click the
button.
button. The Targets dialog box opens.
5. Click Add in the Targets dialog box.
6. Click under Type to display a down arrow.
7. Click the down arrow and select the target type. Available selections are: Agent, AgentGroup, ACDQueue, Place,
PlaceGroup, RoutePoint, Skill, or Variable.
8. Select AgentGroup. AgentGroup appears under Type.
9. Click under the Name field to display the
Composer Help
button.
559
Creating Routing Applications
10. Click the
Composer Help
button. Targets of type AgentGroup appear for selection. An example is shown below.
560
Creating Routing Applications
11. Select a routing target. In this case, select EnglishAgents and click OK.
12. Click OK in the Targets dialog box.
Routing Based on the Value of a Statistic
You have the option of instructing Universal Routing Server to use the value of a statistic during target selection.
For example, you may wish to route to an agent who has been in a "Ready" state for the longest period of time.
1. If you have not already done so, make sure the Configuration Server preference is set to control whether or not to
create Router predefined statistics when connecting to the Configuration Server.
2. In the Properties tab, opposite the Statistic property, click under the Value column to display the
3. Click the
button.
button to open the Statistics dialog box.
You can select from the following statistics:
CallsWaiting
RStatLoadBalance
StatTimeInReadyState
InVQWaitTime
StatAgentsTotal
StatAgentsAvailable
PositionInQueue
StatCallsAnswered
StatAgentsBusy
RStatLBEWTLAA
StatCallsCompleted
StatAgentsInQueueLogin
RStatCallsInQueue
StatCallsInQueue
StatAgentsInQueueReady
RStatCallsInTransition
StatEstimatedWaitingTime
StatAgentLoading
Composer Help
561
Creating Routing Applications
RStatCost
StatExpectedWaitingTime
StatAgentLoadingMedia
RStatExpectedLBEWTLAA
StatLoadBalance
StatAgentOccupancy
RStatExpectedLoadBalance
StatServiceFactor
For a definition of each statistic, refer to the chapter on routing statistics in the Universal Routing 8.1 Reference
Manual.
4. For the sample strategy, select StatTimeInReadyState.
5. In the Properties tab, opposite the Statistics Order property, click under the Value column to display a drop-down
menu.
6. Select Max from the drop-down menu since we want the agent who has spent the maximum amount of time in a
Ready state. You have no finished configuring the first Target block.
Adding Additional Blocks and Connecting
1. Repeat the steps in the Target Selection section to define properties for the second Target block for Spanish-speaking
Agents.
2. Repeat the steps in the Target Selection section to add a third Target block named DefaultRouting for default routing
where you route to an Agent target type.
3. Connect the three Target blocks to the Exit object. The routing strategy diagram now appears as shown below.
YourFirstApp8.gif
Composer Help
562
Creating Routing Applications
Saving
1. Save the diagram as it exists so far by selecting File > Save. You will not be able to generate code if you do not save
the file.
2. If you have set your Configuration Server preferences to do so, validate the code by selecting Diagram > Validate.
You can also click the Validate icon
on the upper-right of the Composer main window when the workflow canvas
is selected. The Problems tab shows the results of validation for this particular Resource. Fix any problems before
continuing.
Generating Code
1. Generate the code by selecting Diagram > Generate Code, or by clicking the Generate Code icon
on the upperright of the Composer main window when the canvas is selected. Check the Problems tab for errors and fix any
problems. If code generation succeeds, click OK at the confirmation dialog box. The SCXML code is generated in the
src-gen folder.
2. Test the workflow.
3. Deploy the workflow.
Composer Help
563
Creating Routing Applications
Using URS and ORS Functions
Composer's Expression Builder allows you to use SCXML elements and extensions as described the Orchestration
Server Developer's Guide as well as Universal Routing Server (Workflow) functions.
Expression Builder opens from many blocks; to name a few:
• Assign--Assign Data Property
• Branching--Conditions Property
• ECMAScript (for workflows)--Script Property
• Entry--Variables Property
• Log--Logging Details Property
• Looping--Exit Expression Property
Using one or more of the above blocks in a workflow gives access to functions for SCXML-based strategies.
The_genesys subcategory is where you will find modules that access Genesys-platform related objects, properties,
and functions. Starting with Release 8.1.410.14, Composer exposes SetIdealAgent and GetIntegerKey()
URS equivalent functions in Expression Builder.
Composer Help
564
Creating Routing Applications
Below is summary information on certain functions accessible via Expression Builder.
Interaction Priority
URS always puts interactions into waiting queues according to their priorities. The priorityTuning function
defines how URS handles interactions with the same priorities. By default, interactions with the same priority are
ordered according to the time the interaction began to wait for some target.
• useAge parameter(true or false). If true, URS uses the time the interaction was created instead of the time interaction
is placed into the waiting queue. Age of interaction is usually the time that URS starts the strategy for the interaction.
• usePredict parameter (true or false). If true, then URS calculates the estimated time for the interaction to be
answered and will use this time instead of the time that the interaction has already waited.
Composer Help
565
Creating Routing Applications
• useObjective parameter (true or false). This parameter works with the URS use_service_objective option (Universal
Routing 8.1 Reference Manual), which allows you to scale the time interval for processing different interactions. If this
option set to true, URS scales the time interval that the interaction waits (or is going to wait) according to the Service
Objective of the interaction
If two interactions wait the same time, such as 60 seconds, but interaction #1 has a Service Objective of 30
seconds and interaction #2 has a Service Objective of 120 seconds, then URS puts interaction #1 ahead of
interaction #2 in the queue (60/30 > 60/120). The figure below shows how to access the priorityTuning function
in Expression Builder.
• For more detailed information on using this function, see the Universal Routing 8.1 Reference Manual and the
Universal Routing 8.1.Routing Application Configuration Guide located on the Universal Routing Wiki.
• For information on Orchestration Server functions, see Orchestration Extensions and Core Extensions topics in the
Orchestration Developers Guide.
Composer Help
566
Routing Block Palette Reference
Routing Block Palette Reference
When you create an application, Composer's palette contains the diagram building blocks. The block categories
that appear depend on what tab is selected above the design area or what workflow or callflow is selected in the
Project Explorer. For example, to see blocks for creating GVP voice applications, click a *.callflow tab. To see
blocks for creating routing applications, click a *.workflow tab, such as default.workflow.
The palette contains the link tools, and various categories of blocks used to build routing workflow diagrams:
• Output Links are used to connect blocks in the order that the application should follow. Exception links indicate error
conditions.
• Flow Control Blocks. Use to control interaction flow control within a workflow diagram.
• Routing Blocks. Routing blocks specify a routing action to be performed with the current interaction, such as sending
an interaction to a specific agent group.
• Voice Treatment Blocks. Voice Treatment blocks specify an action to be performed with the current interaction, such
as playing music for the caller.
• Server Side Blocks. Server-Side blocks provide the ability to interact with internal and external custom server-side
pages, Web Services, and URLs. These blocks can be used to exchange data like VoiceXML and SCXML variables,
JSON strings between GVP interpreter, and custom server-side pages.
• Context Services Blocks. Context Services refers to an optional capability of Universal Contact Server and its
Universal Contact Server (UCS) Database, a repository of customer-related service, and interaction-centric data
(current and historical) from Genesys and third party sources.
• eServices Blocks. Use to create a routing workflow that performs specialized processing of multimedia (non-voice)
interactions.
Composer Help
567
Routing Block Palette Reference
• Outbound Blocks. Use to support Genesys Outbound Contact, a product for creating, modifying, running, and
reporting on outbound campaigns for proactive customer contact.
• Interaction Process Diagram Blocks appear when such a diagram is selected. Use to provide a high level view of
how multimedia routing interactions flow through various components like media servers, interaction queues,
workbins, and workflows. In addition, an IPD functions as the starting SCXML page for both voice and multimedia
interactions.
Tip
Should you accidentally cause the palette to disappear, click the Hide/Show Palette button.
Composer Help
568
Interaction Process Diagram Blocks
Interaction Process Diagram Blocks
The following blocks can comprise an interaction process diagram (IPD):
• Interaction Queue block to define or select a multimedia (non-voice) interaction queue in an interaction process
diagram and to create Views, which defines conditions for pulling interactions out of the queue for submittal to
workflows.
• Media Server block to get interactions of a particular media type (other than voice) into an interaction process diagram.
• Workflow block to point to a workflow resource (workflow diagram or SCXML file) to which interactions should be sent
for processing.
• Workbin block to define a temporary storage area called a workbin, which is accessible from the agent desktop.
• Flow Control blocks to support multiple views per interaction queue, the following Flow Control blocks are available
when creating an IPD: Branching, ECMAScript, Log.
• Workflow-Generated Blocks
Working with IPDs
Information on working with IPDs is presented below.
• IPD Overview
• Starting a New IPD
• Interaction Queue Views
• Linking IPDs with Workflows
• Publishing Updates
Composer Help
569
Interaction Process Diagram Blocks
IPD Differences Voice and Multimedia
There is a difference between interaction process diagrams (IPDs) used for voice-only interactions and IPDs used
for multimedia interactions.
• An IPD for multimedia interactions will contain Interaction Queue, Media Server, and Workflow blocks and possibly
multiple instances of each block depending on the design.
• An IPD for voice interactions will only contain a Workflow block that points to a single workflow resource.
• An IPD for multimedia interactions may contain workflow-generated blocks whereas an IPD for voice interactions will
not show these nodes.
For more information, see:
• Example Multimedia Workflow
• Starting SCXML
Composer Help
570
Interaction Process Diagram Blocks
Starting a New IPD
Use these instructions after reviewing the IPD Planning and Preparation topic. Before starting a new IPD, you may
wish to Connect to Configuration Server (optional). You can do this now or during the validation phase. When not
connected, Configuration Database objects do not appear for selection in Composer dialog boxes; you must know
the names in advance.
Method #1: Create a New Java Composer Project
1. Create a new Java Composer Project. In Composer Design perspective, this automatically creates an Interaction
Processes folder and default.ixprocess file in the Project Explorer. It also automatically creates the following tabs on
the canvas:
• default.ixprocess
• default.workflow
Composer Help
571
Interaction Process Diagram Blocks
The default.ixprocess tab contains a starting Workflow block. The Palette tab shows the Media Server,
Interaction Queue, and Workflow blocks. It also access certain Flow Control blocks.
You can rename the IPD at any time by right-clicking the default.ixnprocess file in the Interaction
Processes folder in the Project Explorer and selecting Rename. The renaming operation does not result in any
changes being written to Configuration Server.
Method #2: New IPD Diagram Wizard
1. Bring up the wizard. There are various ways:
• Click the Create New Interaction Process button on the toolbar.
• Or select File > New > Other > Composer > Diagrams > Interaction Process Diagram.
• Or in the Project Explorer > Right-click > New > Other > Composer > Diagrams > Interaction Process Diagram.
2. Name the IPD
3. Select or create the associated Project.
4. Click Finish.
Composer Help
572
Interaction Process Diagram Blocks
Composer creates an Interaction Processes folder and default.ixprocess file in the Project Explorer. It also
automatically creates default.ixprocess and default.workflow tabs on the canvas. The default.ixprocess tab
contains a starting Workflow block. The palette shows the Media Server, Interaction Queue, and Workflow blocks.
Note: An IPD does not use Entry or Exit blocks.
Tip
To display the IPD properties below, select an *.ixn.process tab above the design area, then
click inside the design area,
An IPD contains the following properties:
Name Property
This property shows the name of the diagram. An IPD diagram can be renamed at any time. The renaming
operation will not result in any changes being written to Configuration Server.
Events Property
With the .ixnprocess tab selected, click the empty space in the IPD to see Events in the Properties view.
The Events property (which replaces the 8.1.2 Wait for Event property) works with the Interaction ID property in
Routing and certain eServices blocks. You select/enter the event(s) that the generated code will wait for before the
workflow code is invoked. If unset, the IPD code will not wait for any event before invoking the workflow code. ORS
will transition on the first event received. The Application does not need to receive all declared events to transition
to the next block.
Starting with Release 8.1.400.33, Composer supplies default handler sets (voice, multimedia, interaction-less
processing) and a Custom option for customizing handlers. You can change the set at any point of time and
generate code. Pre-defined sets are non-editable and should be used for specific media processing. The Custom
type can be used to customize the handlers. The Configure Events dialog box, which opens from the Events
property, is shown below when interaction.added is selected.
Composer Help
573
Interaction Process Diagram Blocks
Refer to Intra Version Upgrades for event upgrade logic.
Event Handlers
All system handlers run into the system thread of the application while the workflow generated code runs into the
user thread of the application.
Composer Help
574
Interaction Process Diagram Blocks
Event handlers can control the lifecycle of the user thread by raising the application.start event (to start the
application, see the interaction added event handler) or the application.exit event (to terminate the
application, see the interaction deleted event handler).
To define this property in case of "interaction-less" processing (defined below), you may:
• Wait for a user-defined event:
• Add a new Event item in the Events property list.
• Specify the appropriate Event name.
• In the body of that event, add the code: <raise event="application.start"> to start the user thread (to
run the workflow SCXML).
• Start the application without waiting for any event:
• Remove all Events items
• Or disable all Events items
• Or in the Events dialog box, add the predefined "interaction-less processing" event (or any similar event having no
Event AND no Condition defined).
In addition to catch all errors, Composer defines the following events:
• interaction.present or interaction.added. This property will be used by default as a value of the IPD/Events
property.
• interaction.onmerge. This event will be caught by the generated IPD SCXML. The value of the variable
system.InteractionID will be updated when the transfer is completed. The parent or primary interaction ID will be
referred to instead of the consult interaction ID.
• interaction.deleted (active interaction id). This event will be caught by the generated IPD SCXML. Default
behavior will be to exit the session. Default behavior can be overrriden if interaction.deleted is handled in the workflow
diagram.
• interaction.deleted (consult interaction id). This event will be caught by the generated IPD SCXML. Default
behavior will be to exit the session if the parent interaction is gone or to do nothing otherwise. Default behavior can be
overridden if interaction.deleted is handled in the workflow diagram.
Note: The condition expression for event-related properties in interaction process (IPD) and workflow diagrams are
not XML-escaped when generating the SCXML code. For more information, see Troubleshooting ORS Compile
Errors and Non Escaped Special Charcters.
Interaction-less Processing
In the case of "interaction-less" processing (for example, see the Force Route Block Interaction ID Property), you
can start an ORS session using the ORS REST API and then decide either not to wait (no Wait For Event defined)
or to wait for a user-defined event. The ORS REST API allows you to send an event to a particular ORS session. To
define this property:
1. Click under Value to display the
2. Click the
button.
button to open the Wait For Event dialog box.
3. Do one of the following:
Composer Help
575
Interaction Process Diagram Blocks
• Leave interaction.present to keep the default value, the system variable InteractionId, which will be
initialized automatically in this case.
• Click Add and select from the list of SCXML events or enter the event name. After selecting an event, the
dialog box displays a description of the event.
A system variable, AppStartEvent, will be generated in the IPD <datamodel>, which will be initialized to the
contents of the specified start event. If unset, the variable will be set to undefined (not the string undefined).
• If necessary, click Remove to clear a selected event.
4. Click OK.
Created By Property
To be filled in by the user/author of the document.
Created On Property
Auto-populated by Composer to indicate the timestamp when the diagram was created.
Designed Using Property
Auto-populated by Composer to indicate version of Composer used to create this diagram.
Last Modified By Property
Provided by the user to indicate who updated the diagram last.
Last Modified On Property
Filled in by Composer when the diagram is modified.
Version Property
Provided by the user for versioning purposes during development.
Composer Help
576
Interaction Process Diagram Blocks
Namespaces Property
Use to refer to custom namespaces in the generated code. To define this property:
1. Click under Value to display the
2. Click the
button.
button to open the Namespaces dialog box.
3. Click Add.
4. Enter the namespace prefix (see example below)
5. Enter the namespace URL (see example below)
6. Click OK.
When an event is sent to an ORS session via http, a response can be sent back from the session via http by using
the ws:response tag as shown below. <ws:response requestid="_data.reserveSendId"
resultcode="JSON.stringify( resultReserve )" /> Namespace:
xmlns:ws=[http://www.genesyslab.com/modules/ws http://www.genesyslab.com/modules/ws]
Extensions Property
This attribute allows arbitrary attributes to be added to the root <scxml> element and is used by Orchestration
Server to control persistence, session recovery, and other functionality.
Note: Composer-generated SCXML applications do not support the w3c value for the _transitionStyle
extension attribute.
Refer to <scxml> element, _transitionStyle extension attribute in the SCXML Language Reference section of
the Orchestration Server Developer's Guide for details.
Read Context Property
This is the counterpart of the Pass Context property in the Routing Blocks. The value of this property is true or false.
When true, the application will try to read the URL of the originating session from the interaction's User Data. If that
URL is defined, it will then attempt to fetch the context from the originating Orchestration Session.
Session Persistence Property
With the .ixnprocess tab selected, click the empty space in the IPD to see Session Persistence in the Properties
view.
Composer Help
577
Interaction Process Diagram Blocks
Select true or false. Use this property to set the _persist attribute of the <scxml> tag when generating the SCXML
code. For more information, see the <scxml> element Attribute Details, SCXML Language Reference section, in the
Orchestration Server Developer's Guide.
Deleting Blocks
IPD diagram non-linked blocks can only be deleted directly from the IPD Diagram canvas. To delete the linked
blocks, go to the corresponding workflow diagram and delete or modify the routing blocks.
Composer Help
578
Interaction Process Diagram Blocks
Interaction Queue Block
Note:
• Starting with 8.1.4, Composer-created SCXML-based routing applications are assigned to Views instead of being
assigned to interaction queues (as in previous releases) and use a Submitter object for this purpose. This change
enables enhanced pulling of multimedia interactions from interaction queues.
The Interaction Queue block is used only for multimedia workflows.Use it to define or select a multimedia (nonvoice) interaction queue in an interaction process diagram and to create Views, which defines conditions for pulling
interactions out of the queue for submittal to workflows. You can create multiple Views per queue.
In contrast, you use the Queue Interaction block to place interactions in queues, not to define queues.
• The Publishing operation pushes the interaction queue into the Configuration Database. Its definition is stored as a
CfgScript object of type Interaction Queue. After defining or selecting an interaction queue, you can direct incoming
(outside) interactions into the queue using the Media Server block and end points.
• Queues that you defined with the Interaction Queue block appear for selection in the Queue Interaction block.
• Composer shows one output port per defined View (Views property below). This allows the user to route interactions
coming through this View to a specific workflow.
• For all properties below, no updates to Configuration Server are created until you invoke the Publish operation.
• You cannot reuse an existing interaction queue in the same IPD, but you can use the same interaction queue in
different IPDs. For more information, see Linking IPDs with Workflows.
• Composer points Interaction Queue objects directly to EnhancedRoutingScript (ERS) objects. It does not point
Interaction QueueView objects to EnhancedRoutingScript objects.
• If routing blocks refer to previously unpublished queues, these references may become incorrect when the queue is
published. These errors are caught by workflow validations and should be fixed by selecting the published queue in
any block properties that show this validation error.
The Interaction Queue block has the following properties:
Composer Help
579
Interaction Process Diagram Blocks
Name Property
Find this property's details under Common Properties.
Block Notes Property
Click under Value to display the
button. Enter text to describe the block.
Object Name
A unique Configuration Server Object Name will be created once a Publish operation is executed. No updates to
the database are created until you invoke the Publish operation. If no name is specified for the interaction queue, it
will default to the currently implemented naming convention of <project name>.<diagram name>.<block name>.
Note: If you rename the block after its corresponding CfgScript object is created in Configuration Server, the
original published object name in Configuration Server remains unchanged. For more information, see Publishing
Updates.
Enabled Property
This property controls whether or not a block contributes code to the application. You may wish to use this property
if there is a need to temporarily remove a block during debugging or, for other reasons during development,
temporarily disable a block. This saves the effort of having to remove the block and then add it back later.
Existing Queue Property
Use this property to select an existing interaction queue. Any changes made to the queue in the IPD are updated in
Configuration Server during the Publish operation.
Queue Description Property
Enter a description of the interaction queue. This property will map to the Description key in the annex section
Queue of the CfgScript object for the interaction queue.
Composer Help
580
Interaction Process Diagram Blocks
Views Property
Use the Views property to open a dialog box where you can define parameters for Interaction Server to use when
processing multimedia interactions waiting in queues. The Composer GUI creates one outport per View. It is
mandatory to define at least one View for an interaction queue in an IPD. These parameters work with the Workflow
block Maximum Interactions property and Interaction Server's own option settings as described in the eServices 8.1
Reference Manual. See the Interaction Server options section in Interacting with eServices in the Orchestration
Server 8.1.4 Deployment Guide.
In Configuration Server, each View will be created as a separate CfgScript object of type
InteractionQueueView.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Submitter Objects
In the Composer GUI, the connection between interaction queue View and a workflow (strategy) is represented by
interaction Submitter Script object. When you add an interaction queue to a IPD, define a View, point the Workflow
block to a .workflow file, and publish, this creates a Submitter Script object in the Configuration Database.
This is applicable when using the eServices/Orchestration Server feature enhanced pulling of interactions from
queues and Use Interaction Submitters is set to true within Composer.
Use Interaction Submitters
Selecting Properties from the Project menu opens a dialog box showing the properties of the selected Project or
of the Project that contains the selected resource. Select Orchestration Server Options to set Use
Interaction Submitters. For older Projects upgraded to 8.1.4, Use Interaction Submitters is off by default.
This option is enabled by default for new 8.1.4 Projects.
You must manually enable this option in the Project Properties to continue with the new way of publishing.
Defining a View
To define a view:
1. Click under Value to display the
2. Click the
button.
button to open the View Properties dialog box (see the Interaction Queue Views topic).
3. Click Add to display Main, Parameterized Conditions, and Segmentation tabs.
Composer Help
581
Interaction Process Diagram Blocks
4. After you complete the applicable fields in these tabs, click OK to close the View Properties dialog box.
Note: Multiple views are supported on a single queue. This enables certain interactions to be processed earlier than
others.
Interaction Queue Definition
To clarify the term, interaction queue, interaction queues used for multimedia (non-voice interactions) are compared
with virtual queues used for voice interactions. Genesys software maintains both interaction and virtual queues.
• A queue in an interaction process diagram is called an interaction queue. You use Composer's Interaction Queue
block to create/configure an interaction queue, which can also be thought of as a persistent queue. Once an
interaction queue is configured and activated, multimedia interactions arriving from media servers are selected and
extracted using the View block property. They are then submitted to Workflows that send them to another interaction
queue or a target (such as an agent, workbin, or server). The definition of an interaction queue defined is stored as a
Script object in the Configuration Database.
• In contrast, all voice interactions arriving from T-Servers are submitted to Universal Routing Server (URS), which
places them in virtual queues. A virtual queue is not a physical queue but rather a logical queue to which all voice
interactions are queued if the specified targets within a routing workflow are not available.
Deleting Interaction Queues
If you delete an Interaction Queue block from an IPD, Composer does not allow deletion of the Interaction Queue
block itself. In this case, you must manually clean up the objects using Genesys Administrator.
Composer Help
582
Interaction Process Diagram Blocks
Adding an Interaction Queue
Starting with Release 8.1.410.14, you can use a queue defined in referenced Projects:
In the Project (A) containing the queue you want to use in another Project (b):
1. Add an Interaction Queue block to the interaction process diagram (IPD).
2. Publish the IPD so that the Interaction Queue gets published to the Configuration Server.
3. In the Project (b) where you want to use the interaction queue contained in Project A, open Project Properties >
Project References and add a reference to Project A.
4. Edit the Queue property for a workflow block. You can now select queues defined in the Project A IPD as well as
Project B IPD.
This feature is available via the following blocks/properties:
• Email Forward/ Output Queue
• Create SMS/Interaction Queue
• Email Response/Output Queue
• Route Interaction/ Queue For Existing Interaction
• Route Interaction/Queue for Outgoing Interaction
• Queue Interaction/ Interaction Queue Name
• Create email/ Output Queue
• Chat Transcript/Output Queue
Composer Help
583
Interaction Process Diagram Blocks
Interaction Queue Views
This topic applies to the Views property for the Interaction Queue Block and Workbin Block topics. Views contain
parameters used when pulling interactions from queues and workbins for submittal to all workflows for further
processing.
Notes:
• Starting with 8.1.4, Composer-created SCXML-based routing applications are assigned to Views instead of being
assigned to interaction queues (as in previous releases) and use a Submitter object for this purpose. This change
enables enhanced pulling of multimedia interactions from interaction queues.
• This block is used only for multimedia workflows.
Multiple Views Per Queue
You can create multiple views per queue, with each view managing submission of an interaction to a separate
routing workflow. Composer creates a dedicated output port on the Interaction Queue block for each view defined in
the block. You can connect multiple workflows to the same view. Flow Control blocks are available.
Defining Views
You are required to create at least one view. To define a view: From the Views property in the Interaction Queue or
Workbin block:
1. Click under Value to display the
2. Click the
Composer Help
button.
button to open the View Properties dialog box.
584
Interaction Process Diagram Blocks
3. Click Add to display fields in the Main tab.
4. Complete the fields as described below.
Main Tab
Fields in the Main tab are described table below.
Field
Description
Enabled
Check the box to make the view ready to extract
interactions.
Name
Enter a name for the view to be used when saving as
Configuration Database Script object.
Description
Enter text describing the view.
Check Interval
Enter the number of seconds to specify the frequency
(time interval) that Interaction Server will use to check the
queue and, if necessary, adjust the number of interactions
that can be submitted to the workflow based on the
Scheduling field.
Composer Help
585
Interaction Process Diagram Blocks
You have the option of creating an expression to be used
as the basis for extract interactions from the queue.
Examples:
customer_segment='gold' AND service_type='sales'
_time_in_queue[] > 4320 You can specify one or more
expressions, which can be comprised of:
Condition
• An interaction attribute name from the interactions
table. The eServices/Multimedia User’s Guide lists
and describes the interaction attributes that you can
use when building an expression.
• A relational operator, such as an equal sign or a
greater than sign.
• The attribute value in single quotes.
• The expression is used for interaction selection as if
you were constructing a SQL SELECT statement and
specifying a WHERE clause.
You have the option of defining the order for extracting
interactions from the queue:
Order
order:= [property_order[,order]]property_order:=
property_name [asc|desc] Example using an attribute found in the
eService/Multimedia interactions table: priority DESC
Use to specify the scheduling condition that Interaction
Server should use, based upon the scheduled time
contained in interactions. The interaction scheduling
functionality uses a database field called scheduled_at,
which is mapped to an interaction property called
ScheduledAt. For information on this field, see the
chapter on interaction properties in the eService/
Multimedia User’s Guide.
Select one of the following:
Scheduling
• Ignore Scheduling. Default. Select if there is no
scheduled processing. Even if the value of
ScheduledAt is set for some interactions,
Interaction Server ignores it.
• Scheduled Only. Select to process only interactions
that are scheduled (ScheduledAt is set) as per the
value of the scheduled time. If selected, Interaction
Server uses the following condition:
(_current_time() >= scheduled_at) and the
following order: scheduled_at, received_at,
id.
This condition and the conditions below are stored in the Scripts folder of
Configuration Manager, InteractionQueueView object, Annex tab.
• Scheduled and Unscheduled. Select to process
scheduled interactions at scheduled times
Composer Help
586
Interaction Process Diagram Blocks
(ScheduledAt is set) and after that, process
unscheduled interactions. In this case, scheduled
interactions are delayed until the scheduled time, and
all others are processed immediately afterwards. If
selected, Interaction Server uses the following
condition: ((scheduled_at is NULL) OR
(_current_time() >= scheduled_at)) and the
following order: scheduled_at, received_at,
id.
• Unscheduled Only. Select to process only interactions
that are unscheduled (ScheduledAt is not set).
Interaction Server uses the following condition:
(scheduled_at is NULL)
This field is only applicable to an Oracle database.
Database Hints
Background: Oracle allows special tags in SQL queries that cause
queries to execute in a way that optimizes performance. These tags are
called Hints. For example, you may wish Oracle to use a certain index to
reorder data during query execution. You can apply a Hint, which will
cause Oracle to use a specific index. One Hint that Oracle provides is:
/*+ index (interactions
interactions_default_view_idx) */. You could enter this Hint
in the Database Hints field.
Parameterized Conditions Tab
Use the Parameterized Conditions tab to specify interaction attributes that can be used in pull requests from
clients of Interaction Server (for example, from an agent desktop). Each pull request can use any listed attribute, a
combination of listed attributes, or none. If an attribute is not listed on this tab, then client applications cannot use it.
For details on pull requests, see the RequestPull section in the chapter on Interaction Management Protocol in the
eService/Multimedia Open Media Interaction Models Reference Manual. For example, if the Parameterized
Conditions tab lists the from_address attribute, then a pull request from a client can include a condition such as
from_address=joe_customer@myisp.com. This would retrieve all interactions from a particular contact. The
Condition tab and the Parameterized Conditions tab both make use of interaction attributes (see the chapter on
Interaction Properties in the eService/Multimedia User's Guide. The difference between them is:
• The Condition tab states a condition that applies to all pull requests.
• The Parameterized Conditions tab only lists attributes that can be used as parameters in a pull request, but it is up to
the client whether or not to use these attributes.
You can: Select the attribute from a drop-down list of interaction attributes. This list includes most of the attributes in
the interactions table. The exceptions are abandoned_at, destinations, moved_to_queue_at,
scheduled_at, server_id, and snapshot_place_id. You can also enter the name of a custom property
that you have created in Configuration Manager. Creating custom properties is described in the Interaction
Properties section of the chapter on Interaction Properties in the eService/Multimedia User's Guide.
Composer Help
587
Interaction Process Diagram Blocks
Using the Parameterized Conditions Tab
1. Click the Parameterized Conditions tab in the View Properties dialog box.
2. Click Add. The Property Configuration dialog box opens.
3. Under Name, enter an Interactions table attribute.
4. Under Value, enter a value.
5. Click OK. The View Properties dialog box shows your entry.
Segmentation Tab
Use the Segmentation tab on the View Properties dialog box to submit an equal number of interactions of different
segments, to define a default limit for each segment pulled from a queue, and to limit the total number of
interactions that can be submitted to a workflow.
Use Case
Assume the following:
Composer Help
588
Interaction Process Diagram Blocks
• You have a simple business process: a queue, the queue’s view, a strategy, and a submitter that submits interactions
from the queue to the strategy through the view.
• There are two groups of agents equal in number. One group is trained to handle only customers of the gold Customer
Segment and another group is trained to handle only customers of the bronze Customer Segment.
• The strategy directs interactions to the corresponding group of agents based on the value of the customer_segment
property of an interaction (assume the value could be either gold or bronze).
• Next, start placing interactions into the queue, five interactions from bronze customers, then four interaction from gold
customers, then again five interactions from bronze customers, three from gold, and so on.
If the strategy has a limit of five interactions that may be submitted into it, when the limit is reached, the strategy will
be full of interactions from bronze customers, but will have no interactions from gold customers. As a result,
interactions from gold customers will be waiting back in the queue and free agents, who are able to handle them,
will also be waiting. Because the interactions are not yet in the strategy, the strategy is unable to route the
interactions. To avoid such a scenario, you could add the customer_segment value to the Segmentation tab of the
View Properties dialog box. After that, Interaction Server will fetch all interactions from the queue, grouping by the
customer_segment property. It will find two distinct values of the property: gold and bronze. Interaction Server will
then divide strategy limit by two (the number of distinct values) and limit the submission of each group of
interactions to the strategy by the calculated value. As a result, Interaction Server submits an equal number of
interactions from each group.
Using the Segmentation Tab
1. Click the Segmentation tab in the View Properties dialog box.
Composer Help
589
Interaction Process Diagram Blocks
2. Click Add. The Property Configuration dialog box opens.
3. Opposite Name, enter an Interactions table attribute.
4. Opposite Value, enter a value.
5. Enter a Segment Interval. Specifies the time, in seconds, that elapses before Interaction Server rechecks the queue
and adjusts the number of interactions that can be submitted to the strategy according to segmentation options. If you
do not specify a value, Interaction Server uses the default value (set in the General tab). Use this parameter when the
default interval at which a queue is checked for new interactions is too long, causing highly time-sensitive interactions
to remain in the queue too long.
6. Enter a Segment Limit. Enables you to override the maximum number of interactions that can be submitted to a
strategy according to the configured segmentation options. If you do not enter a value, Interaction Server uses the
limits set in the strategy. Starting with 81410, the IPD View publish logic does not generate default-limit option in the
View section if the value is 0. The default-limit option is generated only if the value is greater than zero. For existing
Diagrams, republishing the IPD diagram removes the default-limit option if the value is zero and updates the value if it
is greater than zero.
7. Enter a Default Segment Limit. Enables you to control the segmentation feature by specifying default number of
interactions per segment.The segmentation feature ensures that equal number of interactions that belong to different
segments are submitted into the URS strategy. By default, Interaction Server calculates that number by dividing the
total limit for number of interactions in the strategy by the actual number of unique segments present.This Default Per
Segment option overrides this behavior and uses this option value instead of calculating the limit dynamically.This
feature is useful when the number of segments is large (> 1000) and changes rapidly in a wide range. In this case, it
might take too long for the segmentation algorithm to balance the number of interactions submitted to URS. The
Composer Help
590
Interaction Process Diagram Blocks
Default-Segment Limit is generated only if the value is greater than zero. For existing diagrams, republishing the IPD
remove the Default Segment Limit if the value is zero; updates the value if it is greater than zero.
8. Click OK. The View Properties dialog box shows your entry.
Composer Help
591
Interaction Process Diagram Blocks
Media Server Block
This block is used only for multimedia workflows. Use the Media Server block to get interactions of a particular
media type (other than voice) into an interaction process diagram.
Endpoints
A Media Server is associated with one or more Endpoints, with each Endpoint connecting the Media Server to an
interaction queue. For a Media Server block to show Endpoints, those Endpoints must first exist in the Configuration
Database. Then, after you select the Media Server via the Composer Application Property, the Endpoint ports
appear on the Media Server block as well as being listed opposite the Composer Endpoints property. The figure
below illustrates this.
Composer Help
592
Interaction Process Diagram Blocks
Endpoints1.gif
The Publishing operation causes Composer to push the information into the Configuration Database. Its definition is
stored as a CfgScript object. The Media Server block will usually be the first block in a multimedia IPD followed by
an Interaction Queue block, and then a Workflow block. The process goes like this: You connect a Media Server
Endpoint to an Interaction Queue block and the Interaction Queue block to a Workflow block. This arrangement
directs multimedia interactions from the media server into a queue. A view defined for the queue then pulls
interactions from the queue and sends them to a workflow for specialized processing. Notes
• A Media Server block has one or more outports; no input ports are available.
• Multiple Media Server blocks in an IPD cannot refer to the same media server application.
Composer Help
593
Interaction Process Diagram Blocks
Media Servers Supported
Composer supports using the following Genesys eService/Multimedia media servers in IPDs:
• E-mail Server Java--interfaces with the enterprise mail server and the Genesys Web API Server, bringing in new email interactions from customers and sending out replies or other outbound messages.
• SMS Server--used for the common text messaging service available on cellphones and other handheld devices.
• Chat Server--works with Web API Server to open, conduct, and close chat.
• Third Party Server, such as Capture Point applications. Capture Point applications are defined in two possible ways:
1. An application with type CFGCapturePoint.
2. An application with type CFGThirdPartyServer, containing a configuration option called capture-point-type in the
settings section.
For more information on the above server types, see the eServices 8.1 Deployment Guide. The Media Server block
has the following properties:
Name Property
Find this property's details under Common Properties.
Application Property
Select a media server to specify the CfgApplication object in Configuration Server that this block represents.
Any media server already referenced by other Media Server blocks in the same IPD will not be listed. Once the
media server Application object is selected, each Endpoint defined in its CfgApplication object will be shown as
an outport on the block. Notes:
• Different Media Server blocks in the same IPD cannot refer to the same Media Server Application instance in
Configuration Server.
• The same Media Server instance in Configuration Server may be referenced by multiple IPDs.
• One IPD can have multiple Media Server blocks.
Endpoints Property
Click under Value to display the Media Server Endpoints dialog box and select one or more Endpoints. An Endpoint
connects a media server to a queue (Interaction Queue block) within an IPD. The dialog box lists all the Endpoints
associated with the media server specified in the Media Server Application property. When you connect an
Endpoint to an Interaction Queue block in the IPD diagram, this will cause interactions coming out of this Endpoint
to go into the named interaction queue. Notes:
Composer Help
594
Interaction Process Diagram Blocks
• For endpoints already existing on the selected Media Server, only those that were previously unused are displayed as
outports on the block. All endpoints are displayed in the Endpoints dialog, with information about which diagram is
using each endpoint.
• You may define Media Server Endpoints in offline mode. The changes will take effect immediately in the local IPD
diagram. However, other IPD diagrams that use this Media Server will not see the changes as that will require that
Configuration Server be updated with Endpoint details.
• In offline mode, you may input multiple Endpoints and have those definitions stored. Updates to Configuration Server
occur when Composer is connected to Configuration Server and you invoke the Publish action.
• If an Endpoint of a Media Server is already assigned in Configuration Server, then the Endpoint for the Media Server
block is not available for connection to an Interaction Queue block.
• If a Media Server block is deleted, its definition will be removed from the IPD. However, the Media Server object in
Configuration Server will not be modified. Any Endpoints created in the current Media Server block will remain and
may be deleted using Genesys Administrator. You can, however, delete the Endpoints first and then delete the block.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
595
Interaction Process Diagram Blocks
Workflow Block
This block can be used for voice workflows, multimedia workflows, or interaction-less processing when the block is
not connected to an Interaction Queue block. Use this block in an interaction process diagram to point to a workflow
resource (workflow diagram or SCXML file) to which interactions should be sent for processing. Outgoing
connections automatically appearing from a Workflow block that represent objects specified inside the workflow are
referred to in this help as "workflow-generated blocks."
Important
When a workflow is part of an interaction process diagram used for multimedia interactions,
always finish the workflow (and each workflow branch) with one of these blocks: Stop Interaction,
Queue Interaction, or Route Interaction.
The Workflow block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Click under Value to display the
button. Enter text to describe the block.
Object Name Property
A unique Configuration Server object name will be created once a Publish operation is executed. No updates to the
database are created until you invoke the Publish operation. Note: If you rename the block after its corresponding
CfgScript object is created in Configuration Server, the original published object name in Configuration Server
remains unchanged. For more information, see Publishing Updates.
Workflow Blocks and Publishing an IPD
When publishing an interaction process diagram (IPD) to Configuration Server, Workflow blocks are handled in two
different ways:
Use Case #1: The Workflow block is dedicated to voice or interaction-less processing. In that case, you must use a
stand-alone block (the block is not connected to any other block).
Composer Help
596
Interaction Process Diagram Blocks
• When generating the code: Composer generates one SCXML file per such Workflow block (Name=IPD_<ipd file
name>_<workflow block name>.scxml).
• When publishing: Composer creates one Enhanced Routing Script object (Name=<Project Name>.<IPD
name>.<Workflow block name>) per such Workflow block in the IPD being published. The Application/url property of
the ERS refers to the SCXML url (if deployed). The Workflow block Object Name property (read only property) is
updated to the name of the EnhancedRoutingScript object.
Use Case #2: The Workflow block is dedicated to multimedia processing. In this case, the block is connected
(directly or indirectly) after a Workbin block or an Interaction Queue block.
• When generating the code: Composer generates one SCXML file per Interaction Queue/Workbin block (Name=
IPD_<ipd file name>_<interaction queue block name>.scxml). If an IPD has an Interaction Queue block connected to
multiple Workflow blocks (multiple views are defined on the Interaction Queue block), only one SCXML file is
generated when generating the code for that IPD. This unique IPD SCXML is used to initiate the execution for all
Workflow blocks. At runtime, the Workflow SCXML to execute is selected depending on the view the interaction is
pulled from.
• When publishing: Composer creates one Interaction Queue Script object (Name=<Project Name>.<IPD
name>.<Interaction Queue block name>) per Interaction Queue block. Composer creates one Interaction Queue
InteractionQueueViews Script object (Name=<Project Name>.<IPD name>.<Interaction Queue block name>.<View
name>) per Interaction Queue block defined view. Composer creates one EnhancedRoutingScript object (Name=
<Project Name>.<IPD name>.<Interaction Queue block name>.Routing) per Interaction Queue block in the IPD being
published. The Application/url property of this EnhancedRoutingScript object refers to the Queue IPD SCXML url
(if deployed). Composer does NOT create an EnhancedRoutingScript object for the workflow blocks. The
Workflow block Object Name property (read only property) is NOT updated.
Resource Property
To define a resource:
1. Click under Value to display the
2. Click the
button.
button to open the Select Resource dialog box.
3. Select a workflow resource, which can be:
• A workflow diagram that exists in any of the Projects in the Composer workspace.
• An SCXML file created in Composer's SCXML Editor.
4. Select the workflow resource.
5. Click OK. An example is shown below.
Composer Help
597
Interaction Process Diagram Blocks
Maximum Interactions Default Limit
(Maximum Interactions in Composer versions previous to 8.1.440.18.) Use this property to specify the maximum
number of interactions allowed for a strategy to process at any given time. Possible valid values are 1 - 50,000 and
If not specified, Interaction Server uses the default limits configured in its options as described by the maxsubmitted-interactions option, which includes the URS and InteractionServer object name. For more
information on this option, see the eServices Reference Manual.
Important
This block property is only relevant for interactions queued on Interaction Server and takes
precedence over any settings configured in Interaction Server and on the Annex tab of the
Interaction Queue.
During an IPD publish, the EnhancedRoutingScript object in Configuration Server will have this configured
value published under the "Default" section.
Maximum Interactions Limit
This property allows you to enter multiple sets of URS and Interaction Server names with limits. The same
combination of URS Server name and Interaction Server name is allowed only once. During an IPD Publish
operation, the EnhancedRoutingScript object in the Configuration Database will have these values published
under the $URSServerName$ section. Possible valid values are any integer between 1-50,000.
Composer Help
598
Interaction Process Diagram Blocks
Shortcut Menu
Right-clicking a Workflow block opens a menu with the following options:
• Add Note
• File
• Edit
• Delete From Model
• Format
• Open Workflow
• Show Properties View
Selecting Open Workflow opens the workflow resource file in Composer.
• If the resource is a workflow, the diagram will be opened in the workflow diagram editor.
• If the resource is a SCXML file, it will be opened in the SCXML editor in Composer.
Composer Help
599
Interaction Process Diagram Blocks
Workbin Block
This block is used only for multimedia workflows. Use this block in an interaction process diagram to define a
temporary storage area called a workbin, which is accessible from the agent desktop. You can then use the
Workbin property in the Route Interaction block when redirecting interactions for continued processing. Internally,
a workbin has a queue and can support views. The workbin owner (agent, agent group, place, or place group) can
view contents of the workbin and pull interactions out in any order. An agent associated with a workbin may get a
notification when interactions are put into the workbin.
Input and Output Ports
A Workbin block:
• Does not have any input ports. You add Interactions to a workbin via the Route Interaction block in a workflow
diagram.
• Has only one outport, which can be connected to a Workflow block in the IPD. Floating workbins are also allowed that
are not required to be connected to Workflow blocks. This allows interactions routed to workbins to remain in workbins
until they are pulled out by agents
The Interaction Workbin block has the following properties:
Name Property
Use this property to define the name of the workbin, which will appear on the block in the IPD (this is not the
Configuration Database name). Find this property's details under Common Properties.
Block Notes Property
Click under Value to display the
button. Enter text to describe the block.
Object Name Property
A unique Configuration Server Object Name will be created once a Publish operation is executed. No updates to
the database are created until you invoke the Publish operation. Note: If you rename the block after its
corresponding CfgScript object is created in Configuration Server, the original published object name in
Configuration Server remains unchanged. For more information, see Publishing Updates.
Composer Help
600
Interaction Process Diagram Blocks
Interaction Queue Property
Specifies the queue to be used with this workbin. This may be an existing queue in the IPD or it can be a private
queue exclusive to this workbin. Multiple workbins can use the same queue.
1. Click under Value to display the
2. Click the
button.
button to open the Workbin Interaction Queue dialog box.
3. Select one of the following:
• Use Private Queue for a queue exclusive to this workbin.
• Use Queue to select an interaction queue already defined in this IPD.
4. Click OK.
Views Property
A workbin can have one or more views defined in it. Each view represents an exit channel from the workbin (or
workbin’s queue). The criteria defined in the view must be satisfied before an interaction can exit out from the view.
You can also use a view to enable certain types of interactions to be processed earlier than others. Note:
Irrespective of the number of views defined in the Workbin block, the block will have only one outport and will feed
interactions to only one workflow. To define a view:
1. Click under Value to display the
2. Click the
button.
button to open the View Properties dialog box.
3. Click Add to display Main, Parameterized Conditions, and Segmentation tabs. For information on these tabs, see
Interaction Queue Views.
4. After you complete the applicable fields in these tabs, click OK to close the View Properties dialog box. Each view will
be created as a separate CfgScript object of type Interaction Queue View.
Description Property
Enter text that describes the workbin.
Display Name Property
Enter a display name for the workbin to appear in the interaction process diagram.
Composer Help
601
Interaction Process Diagram Blocks
Enabled Property
Select true or false to enabled or disabled this queue as ready to accept interactions. A queue may be enabled
during design time. Note: Setting this property is equivalent to enabling or disabling the Workbin object from
Genesys Administrator or Configuration Manager.
Order Property
Use this property to specify the WHERE clause of a SQL statement, which will determine the order in which
interactions will be sorted in the workbin.
Owner Property
A workbin may be owned by (associated with) one or more agents. Click the down arrow and select one of the
following:
• Agent
• Agent Group(default)
• Place
• Place Group
Agents associated with a workbin may get a notification if an item is placed in the workbin.
Enabled Property
This property controls whether or not a block contributes code to the application. You may wish to use this property
if there is a need to temporarily remove a block during debugging or, for other reasons during development,
temporarily disable a block. This saves the effort of having to remove the block and then add it back later.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
602
Interaction Process Diagram Blocks
Deleting Workbins
If you delete a Workbin block from an IPD in online mode, Composer displays a prompt asking if you wish to delete
its Configuration objects. These will include:
• Interaction Workbin (CfgScript:: InteractionWorkBin)
• Interaction Queues (CfgScript::InteractionQueue)
• Interaction Queue Views (CfgScript:: InteractionQueueView)
If you indicate Yes," then the Interaction Queue object and view objects will be deleted from Configuration Server.
If you indicate No," Composer will not delete these objects from Configuration Server. You must manually clean up
these objects outside of Composer. In offline mode, if you delete a Workbin block from an IPD, the Configuration
Server connection dialog is shown. If a connection cannot be established, object deletion will fail and you must
manually delete the objects outside of Composer.
Composer Help
603
Interaction Process Diagram Blocks
Flow Control Blocks
In an IPD, when an interaction is submitted from an interaction queue to a routing workflow, you can create multiple
views per queue, with each view having its own set of conditions and managing submission of an interaction to a
separate routing workflow. To support multiple views per interaction queue, the following Flow Control blocks are
available when creating an IPD:
• Branching
• ECMAScript
• Log
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
604
Interaction Process Diagram Blocks
Workflow Generated Blocks
Outgoing connections automatically appearing from a Workflow block that represent objects specified inside the
workflow are called workflow-generated blocks. Composer generates the following types of workflow-generated
blocks:
• Forward to External (Email Forward Block)
• Autoresponse
• Chat Transcript
• Classify Interaction
• Dynamic Target
• Queue Reference
• Stop
• Workbin Reference
For example, assume a Workflow block in an IPD references a workflow that contains a Queue Interaction block
that references an interaction queue, a Route Interaction block that specifies a routing target, and a Stop Interaction
block. The workflow-generated Stop, Queue Reference, and Dynamic Target blocks appear as shown in the figure
below.
Composer Help
605
Interaction Process Diagram Blocks
Queue Reference Block
If a workflow referenced in any Workflow blocks puts an interaction into a queue using the Chat Transcript, Email
Response, E-mail Forward, or Queue Interaction block, the IPD shows this information. It display an additional block
of type Queue Reference to represent the interaction queue and shows an interaction going from the Workflow
block to this Queue Reference block. This block is automatically generated by Composer, therefore is not available
on the IPD palette. Composer uses a different color, appearance, and structure for the Queue Reference block
allowing you to easily differentiate it from other blocks selectable from the palette. If a workflow referenced in any
Workflow block creates a new interaction, the IPD shows this information using the Queue Reference block. The
connector for the new interaction from the Workflow block to the ‘Queue Reference’ block will be shown with a
distinctive line pattern in a different color from normal connectors. UI team will be consulted. If the queue used in
the Queue Interaction block was already defined in the IPD, the workflow will connect back to the Interaction Queue
block already be present in the diagram. Blocks Linking to Queue Reference Blocks
• IPDs will show a linked Chat Transcript workflow-generated block if a referenced workflow uses a Chat Transcript
block. The linked Chat Transcript block will link to a Queue reference block representing the queue used in the
relevant block in the workflow.
• IPDs will show a linked E-mail Response workflow-generated block if a referenced workflow uses an E-mail Response
block. The linked E-mail Response block will link to a Queue reference block representing the queue used in the
relevant block in the workflow.
• IPDs will show a linked Forward workflow-generated block if a referenced workflow creates a reply e-mail using the Email Forward block with Forward to External as the Forward Type property. The linked Forward block will link to a
Queue reference block representing the queue used in the relevant block in the workflow.
• IPDs will show a linked Classify Interaction workflow-generated block if a referenced workflow uses a Classify
Interaction block to classify an interaction.
Dynamic Target Block
If a workflow referenced in any Workflow blocks routes the interaction to a dynamic target via the Route Interaction
block, the IPD diagram will show this information using an additional block of type "Dynamic Target." This block is
not available in the IPD palette since it is automatically generated by Composer. A Dynamic Target block gives a
visual indication of the type of target the interaction is being routed to. A note attachment is added to the block
giving details of the targets.
Stop Block
If a workflow referenced in any Workflow block stops an interaction using the Stop Interaction block, the IPD shows
this information using an additional block of type "Stop." This block is not available in the IPD palette since it is
automatically generated by Composer.
Composer Help
606
Interaction Process Diagram Blocks
Workbin Reference
If a workflow referenced in any Workflow blocks uses the Route Interaction block to put an interaction into a
workbin, the IPD diagram shows this information using a workflow-generated blocks of type "Workbin Reference." If
a referenced Workbin block uses a non-private queue, a Queue Reference block is shown in the IPD originating
from the Workbin Reference block. This is helpful if the Workbin block uses a queue that is defined in another IPD
in the same Project. These blocks are not available in the IPD palette since they are automatically generated by
Composer. The figure below shows example Queue Reference and Workbin Reference blocks.
Composer Help
607
Interaction Process Diagram Blocks
Linking IPDs with Workflows
You can't explicitly link IPDs together as there is no higher-level diagram in Composer that shows IPDs as blocks
and then allows you to interconnect them. To clarify:
• IPDs are linked via the workflows they are connected to. For example, assume IPD1 references Workflow1 and this
workflow uses an Queue Interaction block. The block can be set to route the interaction to a Queue2 and Queue2
could exist in IPD2. Therefore IPD1 gets connected to IPD2.
• Interaction Queue blocks in IPDs don’t reference queues; they are queues.
• An interaction queue can be defined in only one IPD. Once defined and Published, a corresponding object is created
in Configuration Server. This interaction queue cannot exist in any other IPD. It can, however, be referenced by blocks
in any number of workflows in the same Project.
Note: IRD allows moving a queue from one business process to another. Once moved, the queue can be used in
the new business process. To do the same in Composer, you can copy an Interaction Queue block from one IPD
and paste into another. Then delete the block from the original IPD. The same Interaction Queue block cannot exist
in two IPDs.
Composer Help
608
Interaction Process Diagram Blocks
Publishing Updates
Publishing an interaction process diagram validates Project configuration information and pushes the information
out to Configuration Server. When you configure an Interaction Queue, Workflow, or Workbin block, Composer
does not send the information to Configuration Server until you invoke the Publish operation. This gives you
complete control of the update process. When publishing an interaction process diagram, Composer also updates
the Configuration Server/Object Name property of the IPD blocks for which a configuration object was created
(applies to Workflow, Workbin, Interaction Queue blocks). You can set Configuration Server Preferences to:
• Automatically publish upon saving.
• Display a prompt to save before publishing.
• Delete published objects when an interaction process diagram is deleted.
• Delete published objects when a project is closed or deleted.
For information on resetting IPD Publish information, see the figure in topic Project Properties dialog box. Expand
Reset IPD Publish Information.
When to Publish
• Any time properties for any of the blocks in the IPD are changed or blocks are added/removed.
• For example, to create a Submitter Script object in the Configuration Database.
• Any time a workflow diagram is renamed. In such cases, you must go back to the Workflow block in the IPD diagram
and point the block to the renamed workflow.
• If you rename your workflow Project -- this will change the deployment URL for the Project. Publishing again will point
the enhanced routing object to the new URL.
• If you delete Published objects in Configuration Server, you can re-publish the diagram to create new objects.
Note: If routing blocks refer to previously unpublished queues, these references may become incorrect when the
queue is published. These errors are caught by workflow validations and should be fixed by selecting the published
queue in any block properties that show this validation error.
How to Publish
1. Before publishing, you must connect to Configuration Server.
2. Right-click an interaction process diagram in the Project Explorer.
3. Select Publish to Configuration Server. The following message appears: The selected IPD diagram's data was
successfully published to Configuration Server.
Once these objects are created successfully in Configuration Server, some manual configuration is still required
before interactions can work. For example, to redirect e-mails to an Endpoint, you must set endpoint key in the pop-
Composer Help
609
Interaction Process Diagram Blocks
clientX section of the e-mail server Application to the correct end-point. For more details, see Deploying a Routing
Application.
_Composer_ Marker Section
The Publish operation puts a marker section in each Configuration Database object it creates. The section name is
__COMPOSER__. The section has the following keys:
Key Name
Value
Description
source
composer
Hard-coded value to indicate object
was created by Composer
last_updated
<timestamp>
Indicates the timestamp when the
publish operation was initiated that
modified this object. Example: Thu
Jan 07 11:26:36 PST 2010. I
owner_diagram
<string>
Name of the Composer diagram that
published this object.
owner_project
<string>
Name of the Composer project that
owns the IPD diagram in
owner_diagram.
owner_uuid
<string>
Identifier of the Composer diagram
that published this object.
IRD Objects Not Modified
The Publish operation does not modify queue and view objects that were not created by Composer. This avoids
accidentally modifying objects previously created by Universal Routing's Interaction Routing Designer (IRD), which
may cause issues in a legacy IRD/URS system. Using the marker section described above to indicate where the
object was created, the following types of objects are not modified if they were not created by Composer:
• CfgScript of type Interaction Queue
• CfgScript of type Interaction Queue View
• CfgScript of type Workflow
Media Server Block Update Detail
The following updates are written to Configuration Server for all Media Server blocks in all IPD diagrams in the
Project:
• Updates endpoints:<tenant DBID> section of specified CfgApplication.
• Each endpoint name attribute's value is set to the name of the interaction queue's CfgScript object that it is connected
to. Only endpoints that were owned by this diagram, or were previously unconnected, are updated.
Composer Help
610
Interaction Process Diagram Blocks
Interaction Queue Block Update Detail
The following updates are written to Configuration Server for all [blocks in all IPD diagrams in the Project:
• A CfgScript object (type = Interaction Queue) is created under the current tenant/Scripts folder. If the object already
exists, its properties are updated.
Block Property
Configuration Server Object/Option
Description
CfgScript object/Annex Section Queue/Description
property
State property of the CfgScript object.
Queue Enabled
If TRUE, set to CFGEnabled. If FALSE, set to CFGDisabled.
• In the Annex of the CfgScript object, the property application is created in section Orchestration. Composer writes the
value in this format: script:<name of Enhanced Routing CfgScript object where <name of EnhancedRouting CfgScript
object> will be replaced with the workflow name.
This will essentially cause all views of the interaction queue to submit interactions to the SCXML application that the
Enhanced Routing object points to. In the IPD, this will be a Workflow block pointing to an existing workflow diagram
or an SCXML file. Note: If you rename an Interaction Queue block after its corresponding CfgScript object has been
created, the object name in Configuration Server remains unchanged. Instead, the key Name in the Annex section
Namespace and its value are set to the new name. Composer displays the changed name.
Interaction Queue View Property Update Detail
The following updates are written to Configuration Server for all Views defined for all Interaction Queue blocks and
Workbin blocks in all IPD diagrams in the Project:
• A CfgScript object (type = Interaction Queue View) is created under the current tenant/Scripts folder. If the object
already exists, its properties are updated. The name of the object follows this format: <container queue CfgScript
object name>/<view name>
Block Property
Config. Server Object
Type
Annex/Option Section
Key/Property
View Name
CfgScript
Namespace
Name
Description
CfgScript
View
Description
Enabled
CfgScript
-
State property
Check Interval
CfgScript
View
Freeze Interval
Condition
CfgScript
View
Condition
Order
CfgScript
View
Order
Scheduling
CfgScript
View
scheduling-mode
Composer Help
611
Interaction Process Diagram Blocks
Parameterized Conditions
(multi-valued)
CfgScript
View
Each value creates a key
like "Condition.<value>"
Database Hints (Oracle)
CfgScript
View
sql-hint
segment-by
Segmentation (multivalued)
CfgScript
View
Value will be
"value1,value2,...valueN"
Segment Check Interval
CfgScript
View
segment-check-interval
Segment Limit
CfgScript
View
segment-total-limit
Note: If you rename a View after its corresponding CfgScript object has been created, the object name in
Configuration Server remains unchanged. Instead, the key Name in the Annex section Namespace and its value
are set to the new name. Composer displays the changed name.
Workflow Block Update Detail
The following updates are written to Configuration Server for all Workflow blocks in the Project.
• A CfgScript object of the Enhanced Routing type is created under the current tenant/Scripts folder.
• In its annex, property url is created in section Application. The value is the URL of the generated SCXML document on
the Composer web server (bundled Tomcat or local IIS). You can change this property using Configuration Manager
or Genesys Administrator to set the correct value for the deployment environment.
In its annex, in section ApplicationParams, the key CustomerView_URL is added. Its value is in this format:
[http:// http://]<configured CV host>:<configured CV port>. Context Services port and host values are picked up
from Composer preferences.
Workflow Blocks and Publishing an IPD
This use cases below apply when Use Interaction Submitters is not enabled and you are not using Interaction
Submitters.
In this case, when publishing an interaction process diagram (IPD) to Configuration Server, Workflow blocks are
handled in two different ways:
Use Case #1: The Workflow block is dedicated to voice or interaction-less processing. In that case, you must use a
stand-alone block (the block is not connected to any other block).
• When generating the code: Composer generates one SCXML file per such Workflow block (Name=IPD_<ipd file
name>_<workflow block name>.scxml).
• When publishing: Composer creates one Enhanced Routing Script object (Name=<Project Name>.<IPD
name>.<Workflow block name>) per such Workflow block in the IPD being published. The Application/url property of
the ERS refers to the SCXML url (if deployed). The Workflow block Object Name property (read only property) is
updated to the name of the Enhanced Routing Script object.
Use Case #2: The Workflow block is dedicated to multimedia processing. In this case, the block is connected
(directly or indirectly) after a Workbin block or an Interaction Queue block.
Composer Help
612
Interaction Process Diagram Blocks
• When generating the code: Composer generates one SCXML file per Interaction Queue/Workbin block (Name=
IPD_<ipd file name>_<interaction queue block name>.scxml). If an IPD has an Interaction Queue block connected to
multiple Workflow blocks (multiple views are defined on the Interaction Queue block), only one SCXML file is
generated when generating the code for that IPD. This unique IPD SCXML is used to initiate the execution for all
Workflow blocks. At runtime, the Workflow SCXML to execute is selected depending on the view the interaction is
pulled from.
• When publishing: Composer creates one Interaction Queue Script object (Name=<Project Name>.<IPD
name>.<Interaction Queue block name>) per Interaction Queue block. Composer creates one Interaction Queue View
Script object (Name=<Project Name>.<IPD name>.<Interaction Queue block name>.<View name>) per Interaction
Queue block defined view.
Composer creates one Enhanced Routing Script object (Name=<Project Name>.<IPD name>.<Interaction Queue
block name>.Routing) per Interaction Queue block in the IPD being published. The Application/url property of this
Enhanced Routing Script object refers to the Queue IPD SCXML url (if deployed). Composer does NOT create an
Enhanced Routing Script object for the workflow blocks. The Workflow block Object Name property (read only
property) is NOT updated.
Workbin Block Update Detail
The following updates are written to Configuration Server for all Workbin blocks in the Project.
• A CfgScript object of the Interaction Workbin type is created under the current tenant/Scripts folder. If the object
already exists, its properties are updated.
• A CfgScript object of the Interaction Queue type is created under the current tenant/Scripts folder. The name of the
object follows this format: <Workbin CfgScript object name>.PrivateQueue.
• A CfgScript object of the Interaction Queue View type is created under the current tenant/Scripts folder. The name
of the object follows this format: <Workbin CfgScript object name>.PrivateView.
• A CfgScript object of the Enhanced Routing type is created under the current tenant/
Scripts folder. The name of the object follows this format: <Workbin CfgScript object
name>.PrivateQueue.Routing.
• A CfgScript object of the Interaction Queue View type is created under the current tenant/Scripts folder for each of
this workbin user defined view. The name of the object follows this format: <Workbin CfgScript object name>.<view
name>.
Starting with Composer 8.1.410.14, Composer generates one Submitter for each not-private view (<project
name>.<IPD name>.<Workbin name>.<View name>.submitter). Each Submitter is published with the following
parameters:
Submitter>Strategy=<project name>.<IPD name>.<Workbin name>.PrivateQueue.Routing
Submitter>View=<project name>.<IPD name>.<Workbin name>.<View name>
Deleting Items from Configuration Server
Configuration Server objects (Enhanced Routing, Interaction Queue, Interaction Queue View, Workbin) might be
deleted from the Configuration Server in following situations:
Composer Help
613
Interaction Process Diagram Blocks
• An interaction process diagram is deleted and that IPD contained blocks for which configuration objects were created.
See also Configuration Server Preferences, Delete published objects, when Interaction Process Diagram is closed or
deleted option. Note that Composer must be connected to the Configuration Server in order to be able to effectively
delete the Configuration objects.
• A project containing interaction process diagrams is closed or deleted and those IPD contained block(s) for which
configuration objects were created. See also see Configuration Server Preferences, Delete published objects when
Project is closed or deleted option. Note that Composer must be connected to the Configuration Server in order to be
able to effectively delete the Configuration objects.
• An interaction process diagram is published and
• some blocks of that IPD, for which configuration objects were created, have been deleted.
• some blocks of that IPD, for which configuration objects were created, have been updated (for example some
views were removed from an Interaction Queue block).
In all cases, the user is prompted for deletion confirmation for each Configuration Server object that Composer is
going to delete.
Composer Help
614
Route Flow Control Blocks
Route Flow Control Blocks
The table below summarizes the routing blocks used for flow control.
Assign Block
Use to assign a computed value/expression or a literal
value to a variable
Attach Block
Use for attaching a specific interaction to the current
Orchestration Server session.
Begin Parallel Block
Use to enable the design of multiple threads, such as
running busy treatments in parallel files.
Branching Block
Use as a decision point in a callflow or workflow. It
enables you to specify multiple application routes based
on a branching condition. Depending on which condition
is satisfied, the call follows the corresponding application
route.
Cancel Event Block
Use to cancel a custom event.
Detach Block
Use for detaching a specific interaction from the current
Orchestration Server session.
Disconnect Block
Use to invoke the Cancel Call treatment, which ends the
strategy and deletes the interaction from URS memory.
ECMAScript Block
Use to build an ECMA Script expression for routing
decisions.
End Parallel Block
Use to mark the end of the threads that were started by a
matching Begin Parallel block.
Entry Block
All routing strategy diagrams must start with an Entry
block. Defines variables that can be shared across
different blocks in the same workflow. The Entry block
cannot have any incoming connections.
Exit Block
Use to terminate the workflow or to return control back to
calling workflow in case of subworkflow (subroutine).
Log Block
Use to log information about the application; for example,
caller-recorded input that is collected while the application
is running, or error messages.
Looping Block
In cases where multiple records are returned, the Looping
block can loop through all the records.
Raise Event Block
Use to throw custom events.
Response Block
Sends a response to a request-based event from an
external application to the Orchestration Platform.
SCXML State Block
Use to write custom SCXML code for Composer to
include in the SCXML document that it generates based
on the workflow diagram.
Subroutine Block
Use to invoke external SCXML documents or a subworkflow created using Composer.
User Data
Use to update an interaction's User Data.
Composer Help
615
Route Flow Control Blocks
Wait Event Block
Composer Help
Use to have ORS transition out when one of the defined
events is received and the associated condition is true.
616
Route Flow Control Blocks
Assign Common Block
Use the Assign common block to assign a computed value/expression or an entered value to a variable. Function
getSIPHeaderValue(headername) returns the SIP header value associated with the given SIP headername. You
may wish to use this function with the Assign block. By default, this option is disabled for backward compatibility. To
set this preference, right-click the Project, select Properties, Default Logging and check Log Assign block
Variable assignments. Applicable for both Java and .NET Projects.
Starting with 8.1.440.18, Composer Assign blocks are enhanced to generate logging statements as part of code
generation. With this enhancement ORS and MCP logs will show the Assign variables and expressions.
A new Project-level property, Default Logging, is added to control this logging capability. By default, this option is
disabled for backward compatibility. Applicable for both Java and .NET Projects.
Composer Help
617
Route Flow Control Blocks
The Assign block has the following properties:
Name Property
Find this property's details under Common Properties for Workflow Blocks.
Block Notes Property
Find this property's details under Common Properties for Workflow Blocks.
Assign Data Property
This property assigns a value (expression) to a variable. You select the variable and then enter an expression,
either a literal or one created in Expression Builder.
To select a variable and assign a value:
1. Click the Assign Data row in the block's property table.
Composer Help
618
Route Flow Control Blocks
2. Click the
button to open the Assign Data to Variables dialog box.
3. Click in the Variable field to display a down arrow.
4. Click the down arrow and select a variable whose value will be evaluated to determine the branching condition. Default
application variables are described in the Entry block for voice applications and the Entry block for routing
applications. You can also use a custom variable.
5. Click under Expression to display the
button.
6. Click the
button to open Expression Builder. For examples of how to use Expression Builder, see the
ExpressionBuilder topic.
7. Select an operator for the branching condition.Your variable's value will be equal to (==), less than (<), greater than
(>). less than or equal to (<=), greater than or equal to (>=) or not equal to (!=) to value you enter in the Expression
field.
8. In the Expression field, create a value to compare to the variable's value. Enclose the value in single quotes (' ').
9. Click the
button to validate the expression. Syntax messages appear under the Expression Builder title.
10. Click OK to close Expression Builder and return to the Assign Data to Variables dialog box.
11. You can make multiple variable/value assignments. Click the Add button if you wish to add more assignments and
repeat the steps above.
Editing Expressions
To edit an expression:
1. Click its row under Expression in the Assign Data to Variables dialog box. This causes the
2. Click the
button to appear.
button to re-open Expression Builder where you can edit the expression.
Exceptions Property
Find this property's details under Common Properties for Workflow Blocks.
• For callflows, invalid ECMAScript expressions may raise the following exception event: error.semantic.
• For workflows, invalid ECMAScript expressions may raise the following exception events:
error.script.SyntaxError, and error.script.ReferenceError.
You can use custom events to define the ECMAScript exception event handling.
Condition Property
Find this property's details under Common Properties for Workflow Blocks.
Composer Help
619
Route Flow Control Blocks
Logging Details Property
Find this property's details under Common Properties for Workflow Blocks.
Log Level Property
Find this property's details under Common Properties for Workflow Blocks.
Enable Status Property
Find this property's details under Common Properties for Workflow Blocks.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
620
Route Flow Control Blocks
Attach Block
Use the Attach block for attaching a specific interaction to the current Orchestration Server session. For more
information see <attach> in the Orchestration Server Developer's Guide, Interaction Interface Action Elements.
The Attach block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
This property provides the ability to define a set of exceptions handled by this block. Any exception not caught by a
block in a thread might be caught by the enclosing Begin Parallel block. Find more detail under Common
Properties.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Composer Help
621
Route Flow Control Blocks
Interaction ID Property
This property specifies the ID of the Interaction to attach to this Orchestration Server session. Set to a meaningful
value or keep the default value, which is the system variable InteractionId. Find more details under Common
Properties.
Enable Status Property
Find this property's details under Common Properties.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
622
Route Flow Control Blocks
Begin Parallel Block
Use this block to enable the design of multiple threads, such as running busy treatments in parallel files. A thread is
a list of blocks that run one after another. Use the End Parallel block to mark the end of the threads that were
started by a matching Begin Parallel block. Starting with 8.1.2, Composer removes the restriction on the type of
blocks that can be used in a busy treatments chain in 8.1.0 and earlier. Blocks such as the ECMAScript block,
Database blocks, and so on, are now usable in busy treatment chains. Blocks that work on an interaction or create
new interactions may not be used as busy treatments.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Composer Help
623
Route Flow Control Blocks
Body Property
This property represents the SCXML that is mandatorily executed in the Parallel block before the parallel regions or
legs begin to execute. This is useful for initialization of variables or other logic that should be completed before
parallel regions begin to execute.
1. Click opposite Body under Value. This brings up the
2. Click the
button.
button to bring up the Configure Body dialog box.
3. Enter the executable content of the <state> element. . All content (children) of the state are editable. You also have
the option of adding code to <onentry> and <onexit>.
4. When through, click OK. Note: The editor does not validate against the SCXML schema.
Complete All Threads Property
This property controls when Orchestration Server is to transition out of the <parallel> structure.
Threads Property
block will have a Threads property to specify the number of threads to run in parallel. The number of outport will be
automatically adjusted accordingly.
Composer Help
624
Route Flow Control Blocks
Enable Status Property
Find this property's details under Common Properties.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
625
Route Flow Control Blocks
Branching Common Block
The Branching block is used for both routing and voice applications. For an example of using the branching block in
a strategy, see the Your First Application topic. Use the Branching block as a decision point in a callflow or
workflow. It enables you to specify multiple application routes based on a branching condition. Depending on which
condition is satisfied, the call follows the corresponding application route. A default path is automatically created
once the conditions have been defined. If the application cannot find a matching condition, it routes the call to the
default flow. Note: To support creating multiple views per interaction queue, the Branching block is available when
creating an IPD.
Date/Time Functions
You can open Expression Builder from the Condition property and access the following date/time URS functions
(Data Category=URS Functions > Data Subcategory=genesys):
• _genesys.session.timeInZone(tzone)
• _genesys.session.dayInZone(tzone)
• _genesys.session.dateInZone(tzone)
• _genesys.session.day.Wednesday
• _genesys.session.day.Tuesday
• _genesys.session.day.Thursday
• _genesys.session.day.Sunday
• _genesys.session.day.Saturday
• _genesys.session.day.Monday
• _genesys.session.day.Friday
The Branching block has the following properties:
Exceptions Property
The Branching block has no page exceptions.
Name Property
Find this property's details under Common Properties for Workflow Blocks.
Composer Help
626
Route Flow Control Blocks
Block Notes Property
Find this property's details under Common Properties for Workflow Blocks.
Condition Property
Find this property's details under Common Properties for Workflow Blocks.
Conditions Property
Selecting this property open a dialog box with Name, Expression, and Post Action columns. Here you have the
option of specifying some ECMAScript code to be executed when a condition evaluates to true and the branching
path is selected. Any javascript code you type in Post Action column will be executed as part of the <transition>
body related to the condition.
Exceptions Property
Find this property's details under Common Properties for Workflow Blocks. You can also define custom events.
Ignore Script Errors Property
This property is related to the Conditions property, Post Action column. Any scripting error raised while executing
the Post Action code is discarded when the Ignore Script Errors property is set to true.
Logging Details Property
Find this property's details under Common Properties for WorkflowBlocks.
Log Level Property
Find this property's details under Common Properties for Workflow Blocks.
Composer Help
627
Route Flow Control Blocks
Enable Status Property
Find this property's details under Common Properties for Workflow Blocks.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
628
Route Flow Control Blocks
Cancel Event Block
Use cancel a custom event. You specify the event name and a message, which is selection of a dynamic variable.
It is a terminating block (can end an application instead of an Exit block). Orchestration Server 8.1.2+ versions are
required for Raise and Cancel Event blocks.
The Cancel Event block has the following properties:
The Cancel Event block has no page exceptions.
Name Property
Find this property's details under Common Properties for Workflow Blocks.
Block Notes Property
Find this property's details under Common Properties for Workflow Blocks.
Condition Property
Find this property's details under Common Properties for Workflow Blocks.
Exceptions Property
Find this property's details under Common Properties for Workflow Blocks.
Logging Details Property
Find this property's details under Common Properties for Workflow Blocks.
Log Level Property
Find this property's details under Common Properties for Workflow Blocks.
Composer Help
629
Route Flow Control Blocks
Request Id Property
Select the variable containing the request ID.
Enable Status
This property controls whether or not a block contributes code to the application. You may wish to use this property
if there is a need to temporarily remove a block during debugging or, for other reasons during development,
temporarily disable a block. This saves the effort of having to remove the block and then add it back later.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
630
Route Flow Control Blocks
Detach Block
Use the Detach block for detaching a specific interaction from the Orchestration Server session. For more
information see the Orchestration Server Developer's Guide, <detach> interface action element. The Detach block
has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
This provides the ability to define a set of exceptions handled by this block. Any exception not caught by a block in
a thread might be caught by the enclosing Begin Parallel block. Find more details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Composer Help
631
Route Flow Control Blocks
Interaction ID Property
This property specifies the ID of the Interaction to detach from this ORS session. Set to a meaningful value or keep
the default value, which is the system variable InteractionId. Find more details under Common Properties.
Pass Context
This property accepts true/false values. When set to true and Detach is also true:
• URL built with the block name is stored into this interaction's user data (user data key name is
'_composer_originating_session') just before detaching the interaction. That URL will be used by the orchestration
destination session (that is the new orchestration session started to handle the interaction after it was redirected to an
other routing point) to request the context of the originating session. After the processing for this block is over, the
originating session is blocked until the destination session actually reads the context. The context consists of the
system and user variables.
Pass Context Timeout
This property can be passed a positive integer value or a variable. This is the maximum time to wait (in seconds) for
the destination session to read the originating session's context.
Enable Status Property
Find this property's details under Common Properties.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
632
Route Flow Control Blocks
Disconnect Block Routing
Use to disconnect the caller and end the call. The Disconnect block invokes the CancelCall treatment, which ends
the workflow and deletes the interaction from URS memory. The Disconnect block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable InteractionId. Find more details
under Common Properties.
Terminate Session Property
Select true or false.
Condition Property
Find this property's details under Common Properties.
Composer Help
633
Route Flow Control Blocks
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Single Session Treatments
When using the Play Application, Play Sound (Music and ARM Types) Exit, and Disconnect blocks, voice
applications can now optionally use a single VXML session on Media Control Platform to play/run multiple
treatments instead of using one session per treatment. This enables DTMF buffering between multiple MSML
treatments. For more information, see Single Session Treatments.
Composer Help
634
Route Flow Control Blocks
ECMAScript Block
Orchestration Server (ORS) 8.0+ supports SCXML plus ECMAScript as a routing language for use in Composer
when creating routing workflows. While the core SCXML provides State Chart functionality, you can specify ORSspecific instructions, such as conditions that can be used for routing decisions, in the form of ECMAScript. The
Script property brings up Composer's Expression Builder for creating those conditions in the form of expressions.
Use the ECMAScript block to build an ECMAScript expression.
Notes:
• The ECMAScript block supports general ECMAScript in addition to ORS-specific Extensions.
• If the Composer Project contains a folder at include/user, then any files with extension .js will be included in the
generated SCXML. This allows you to write custom ECMAScript and include it in the application.
• To support creating multiple views per interaction queue, the ECMAScript block is available when creating an IPD.
• To set external event processing when transitioning out of ECMAScript blocks, select Properties from the Project
menu. A dialog box opens showing the properties of the selected Project or of the Project that contains the selected
resource. Select Orchestration Server Options to set external event processing.
• Also see the SCXML State Block.
The ECMA Script block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
• For callflows, invalid ECMAScript expressions may raise the following exception event: error.semantic
• For workflows, invalid ECMAScript expressions may raise the following exception events:
error.script.SyntaxError and error.script.ReferenceError
Composer Help
635
Route Flow Control Blocks
You can use custom events to define the ECMAScript exception event handling.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Script Property
To create an ECMAScript expression in Expression Builder:
1. Click opposite Script under Value. This brings up the
2. Click the
button.
button to bring up Expression Builder.
Expression Builder gives access to various categories of data, which can be used in expressions. To create an
expression, follow the instructions in the Creating Expressions topic.
Excluding Agents
Note: When _genesys.queue.excludeAgents is used in a routing workflow before a Target block, the URSprovided list of excluded agents will be applied to the current or any future Target block. The effect of
the_genesys.queue.excludeAgents execution can be cancelled only by the execution of another
_genesys.queue.excludeAgents or if URS stops this interaction processing.
Composer Help
636
Route Flow Control Blocks
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Using Genesys Extensions
Assume you expand Orchestration Server Functions in Expression Builder.
The Orchestration Server Functions category shows various Genesys-supplied Orchestration Extensions described
in the Orchestration Server Developer's Guide, such as the genesys.queue.checkAgentState extension
shown below. Also, the Universal Routing 8.1 Reference Manual describes many URS equivalent functions, which
have similar names but are not necessarily equivalent. For example, the Functions chapter of that manual describes
a CheckAgentState function. These functions are intended to be called in Interaction Routing Designer, which was
historically used to create routing strategies prior to Composer.
Assume you double-click genesys.queue.checkAgentState. Expression Builder now appears as shown
below.
Composer Help
637
Route Flow Control Blocks
ECMA1.gif
Composer Help
638
Route Flow Control Blocks
In this case, the genesys.queue module implements the target selection functionality of URS (finding resources
for interactions and delivering interactions to the resource). When URS executes these extensions, it returns events
back to the instance of logic running the SCXML document that requested the action.
Composer Help
639
Route Flow Control Blocks
End Parallel Block
This block works with the Begin Parallel Block to enable the design of multiple threads. Use the End Parallel block
to mark the end of the threads that were started by a matching Begin Parallel block.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Composer Help
640
Route Flow Control Blocks
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
641
Route Flow Control Blocks
Entry Block and Variables
Use the Entry block to:
• Set global error (exception) handlers.
• Define global variables for the workflow.
All workflow and callflow diagrams must start with an Entry block, which cannot have any incoming connections.
There are different Entry blocks for routing workflows and voice callflows. The Entry block is used as the entry point
for a main workflow or subworkflow (subroutine). Composer throws a validation message if the Entry block is
missing or more than one is added.
The Entry block defines the initial entry state for interactions, all global state variables, and the datamodel. In the
SCXML code for the workflow, all subsequent blocks are added as child states inside the Entry block’s state. This
allows the event handlers in the Entry block to act as global event handlers for the entire workflow. Any events not
caught at the local level (for individual blocks) are caught at the global level by the Event handlers in the Entry
block.
The Entry block global variables define the State for the application and are maintained as the <datamodel> in the
SCXML engine. The Back End block provides a Pass State property to pass state information to the Server side.
An Entry block user-defined variable can be used to access the results of a Stored Procedure call specified in a DB
Data block for both voice and routing applications. Note: Outlinks starting from the Entry block cannot be renamed
or assigned a name through the Properties view.
The Entry block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Composer Help
642
Route Flow Control Blocks
Exceptions Property
Use this property to define which exceptions or events to handle at the Entry block. This block contributes a state in
the generated SCXML code that is a parent state for all blocks in a Workflow. This allows an event received for any
of the workflow blocks to be handled at the Entry block.
1. Click opposite Exceptions under Value. This brings up the
button.
2. Click the
button to bring up the Exceptions dialog box. The sample below shows the dialog with with the
interaction.deleted event selected.
Starting with 8.1.410.14, a resultof guard condition check is now made when processing eServices/child
interactions. The Entry block interaction.deleted event handlers are updated with the following guard conditions:
• Current interaction deletion.
• The interaction.deleted event is from an interaction deletion and not from a detach operation.
_event.data.interactionid == system.InteractionID && (!_event.data.resultof ||
_event.data.resultof == 'deletion')
3. Click Add to add new exceptions to the list of handled exceptions.
4. For each exception, specify a unique name and an exception event. Also see handling eServices Switchovers.
• Name--Composer uses the name of the exception to label the outport.
• Event--Use to select the specific exception event.
Composer Help
643
Route Flow Control Blocks
• Condition--The guard condition for this exception, which you define in Expression Builder. The exception is
selected only if the condition evaluates to true.
• Target--If true, an exception port is created and the user can connect it to the block this exception will transition
to when it is executed. If false, the exception will not cause a change in the state configuration when it is
executed. The executable content contained in the exception will still be executed, so the exception will function
as a simple exception event handler.
• Body--(optional) Executable scxml code that will be executed when this event is received and any specified
condition evaluates to true. This code is executed before any other blocks that are connected as this exception's
event handlers.
5. When done with the dialog box, click OK.
You can also find general information on the Exceptions property under Common Properties.
Variables Property
You have the option of defining application variables in the Entry block (Application variables can also be defined
outside the Entry block via the toolbar). Variable descriptions entered in the Entry block are visible when selecting
the variable for use in other blocks, such as the Assign block. Composer supports passing variables between a
workflow and sub-workflow. To view variables:
1. In the Properties tab, click opposite Variables under Value to display the
button.
2. Select Project, System, or User Variables.
3. Click the arrow to display the selected type. An example System Variables dialog box is shown below.
Composer Help
644
Route Flow Control Blocks
The Entry block lists all the variables associated with the workflow. Composer supports the following types of
variables for workflow diagrams in the Entry block:
• Predefined system variables, which cannot be edited or deleted, but applications can modify their values.
• Project variables local to the diagram file.
• Input variables, which are only used for Subroutines. These are user-defined and should be passed from the main
diagram to the called Subroutine diagram file.
Starting with 8.1.410.14 you can:
• Invoke the Entry Block variables dialog when a property is selected in the Properties view using ALT+V.
Composer Help
645
Route Flow Control Blocks
• Enable Composer to automatically declare variables in a Main callflow to match input/output variable names in Subcallflows and automatically perform the mapping. For more information, see the auto synchronization option in
Diagram Preferences.
Also see:
• The DB Data Common Block, Column Names and Records Variable properties.
• The User Data Block, Variable Naming section.
Restore System Variables Default Values
Projects created in earlier versions of Composer may throw runtime errors due to incorrectly initialized system
variables after upgrading to Composer 8.1.3. This was due to changes in how system variables are stored and
handled in 8.1.3. To resolve this, the Entry block Variables dialog contains a button to restore system variables to
default values. This can be used to reset variables and fix initialization. However, this also removes any custom
values set in system variables. After resetting system variables, these custom values will need to be set again.
When upgrading to 8.1.4+ versions from prior 8.1.300.58 versions, make sure the workflow diagram Entry Block
System variables have the latest default values. If not, workflow diagram file validation generates a warning
message in the Problems view: System variables have non-default values. To restore the System variables to
Composer-supplied default values, open the Entry Block > Variables dialog and use the Restore system variables
default values button to reset the system variables.
Defining Variables
Important! When defining a variable name, the name:
• Must not start with a number or underscore.
• May consist of letters, numbers, or underscores.
When you define and initialize a variable that is expected to be played as a date later on in the workflow, define the
value using the following format: yyyyymmdd. Example: MyDate=20090618. You must use this format; Composer
does not perform any conversions in this case. When you define and initialize a variable that is expected to be
played as a time later on in the workflow, define a 12 hour-based value using the following format: hhmmssa or
hhmmssp. Examples: MyTime=115900a or MyTime=063700p. Define a 24 hour-based value using the following
format: hhmmssh Example: MyTime=192000h. You must use this format; Composer does not perform any
conversions in this case. Default Application Variables See the Variables: Project and Workflow topic. Adding a
New Variable To add a new variable in the Application Variables dialog box:
1. Click Add. Composer add a row for variable and generates a temporary name and number; for example: var7.
2. Select the row and supply the Name, Type, Value, and Description fields.
3. Click OK.
Variable Name You can use the Variable name field for either of the following purposes:
• To enter the name of a new variable.
Composer Help
646
Route Flow Control Blocks
• To change the name of an existing variable. To do this, select an existing variable from the list of variables. The
variable's name appears in the Variable box, and you can the change its value in the Value box.
Excluded Characters The Variable name field will not accept the following special characters:
• less-than sign (<)
• greater-than sign (>)
• double quotation mark ()
• apostrophe (‘)
• asterisk (*)
• ampersand (&)
• pound (#)
• percentage (%)
• semi colon (;)
• question mark (?)
• period (.)
• all characters that are considered ECMAscript operators; example: "-"
The variable Value field will not accept the following special characters:
• less-than sign (<)
• greater-than sign (>)
• double quotation mark ()
• apostrophe (‘)
• ampersand (&)
• plus sign (+)
• minus sign (-)
• asterisk (*)
• percentage (%)
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Composer Help
647
Route Flow Control Blocks
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
648
Route Flow Control Blocks
Exit Block Routing
Use to terminate the workflow or to return control back to calling workflow in case of a subworkflow (subroutine).
Every strategy flow must have at least one Exit block (multiple Exit blocks are allowed, such as when using the
Branching block). Composer generates a validation message if an Exit block is missing. If a workflow does not
perform target selection and reaches the Exit block, the call is default routed to the default destination in
Configuration Server, which is a configured DN. For more information, see option default_destination in the
Universal Routing 8.1 Reference Manual. The Exit block has the following properties:
Name Property
The Name property is present in all blocks in Composer. The Name property is the first property for all blocks.
• Use the Value field beside in the Name property row of the block's property table to name the block. Block names
should conform to ECMAScript and SCXML identifier naming conventions, and they are limited to a maximum of 255
characters.
• Names may consist only of numbers, letters, or initial underscores (_).
• Names should only begin with a letter or underscore.
• Names can end only with a letter or a number.
• Except for the Entry and Exit blocks, you should give all blocks a descriptive name. For example, if an Input block asks
the caller to input an account number, then the name of the block could be Input_Account_Number.
• The name of the block is used as the Name of the <form> tag that gets generated for that block.
To provide a name for a block:
1. Select the Name row in the block's property table.
2. In the Value field, type a block name that conforms to the restrictions above.
Block Notes Property
Find this property's details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Composer Help
649
Route Flow Control Blocks
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable InteractionId. Can be used
for "interaction-less" processing for scenarios where the InteractionId variable is not automatically initialized,
but instead must wait for an event. An example would be an SCXML application triggered by a Web Service that
does not add an interaction. Background: Previous to 8.1.1, Composer did not expose an Interaction ID property.
Instead, when ORS started processing an interaction, a generated SCXML application automatically initialized the
system variable, InteractionId. This variable was then used internally by Routing and certain eServices blocks
when interacting with ORS. With the introduction of support for Interaction-less processing, you can now define a
specific event (IPD (Event property) to initialize InteractionId, or not define an event at all. For scenarios with
an interaction (IPD Diagram/Event=interaction.present for example), you may keep the default value for the
Interaction ID property. The default value is the system variable InteractionId, which is initialized automatically
in this case. For other scenarios (any scenario where the system variable InteractionId is not set), you may
choose to:
1. Not use blocks that require an Interaction ID
2. And/or set the Interaction ID property to a meaningful value
3. And/or assign a meaningful value to the InteractionId system variable
Return Values Property
This property is visible only for subworkflows. Use to specify the variable(s) whose value(s) will be returned once
the Exit block is executed. To select return variables:
1. Click the Return Values row in the block's property table.
2. Click the
Composer Help
button to open the Return Values dialog box.
650
Route Flow Control Blocks
3. Select individual variables, or click Select all or Deselect all as needed.
4. Click OK to close the Return Values dialog box.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Single Session Treatments
When using the Play Application, Play Sound (Music and ARM Types) Exit, and Disconnect blocks, voice
applications can now optionally use a single VXML session on Media Control Platform to play/run multiple
treatments instead of using one session per treatment. This enables DTMF buffering between multiple MSML
treatments. For more information, see Single Session Treatments.
Composer Help
651
Route Flow Control Blocks
Response Block
The Response block works with the <response> Action Element, an Orchestration Server extension, which can be
used in SCXML code. For more information, see the Orchestration Server Developer’s Guide, Core Extensions,
Web Services Interface, Action Elements, <response> Action Element.
Use the Responses block to send a response to a request-based event from an external application to the
Orchestration Platform.
In summary, the Response block:
• Waits for and responds to a particular request sent to Orchestration Server's HTTP interface.
• Responds to a particular request that was received earlier and referenced by its _sendid.
• Supports a timeout capability to transition out if no request is received within a specified time range.
• Reads parameters from the request.
• Specifies parameters in the response.
Name Property
Find this property's details under Common Properties for Workflow Blocks.
Block Notes Property
Find this property's details under Common Properties for Workflow Blocks.
Exceptions Property
This property provides the ability to define a set of exceptions handled by this block. Find more detail under
Common Properties.
Condition Property
Find this property's details under Common Properties for Workflow Blocks.
Composer Help
652
Route Flow Control Blocks
Logging Details Property
Find this property's details under Common Properties for Workflow Blocks.
Log Level Property
Find this property's details under Common Properties for Workflow Blocks.
Event Property
Use this optional property to store the content of the request (JSON data) in a variable. Click the down arrow and
select a variable. The default value is system.ANI set in the Entry block, Variables property.
Request ID Property
Use requestid to create an expression identifying the request to which the Response block is going to reply.
Expression Builder will show _event.sendid representing the request that was received earlier. The default value
is _event.sendid where _event is the last event received by this session.
Requests Property
When this property is specified, the Response block will block the application execution (or the parallel leg of the
application it belongs to) until one of the specified events is received and the (optional) associated condition
expression returns true. The Request ID Property should be assigned to its _event.sendid default value.
Parameters Property
Use this property to specify parameters and values for the response to the external request.
1. Click the Parameters row in the block's property table.
2. Click the
button to open a dialog box and ExpressionBuilder for configuring the parameters and values for the
response to the external request.
Composer Help
653
Route Flow Control Blocks
Result Property
Use the Result property to create a string which will represent the result code associated with the response to the
external request. For more information see the Orchestration Server Developer's Guide, Action Elements,
resultcode.
Type Property
Use the Type property to specify whether the response to the external request is positive or negative. For more
information, see the Orchestration Server Developer's Guide, Action Elements, type.
Timeout Property
Use this property to select a variable containing a timeout value, which will be used to transition out if no request is
received within a specified time range or keep the default of 30 (added starting with 8.1.440.18).
This property supports the following:
• Literal integer value. For example: Timeout=4 & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'4s'"/>.
• Variable with integer value. For example: Timeout=Variable(4) & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'4s'"/>.
• Variable with string value. For example: Timeout=Variable('6') & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'6s'"/>.
• Variable with string value including unit. For example: Timeout=Variable('6ms') & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'6ms'"/>. In this case, the unit specified in the variable is
used instead of the static property unit.
Unit Property
Use this property to specify the units for the Timeout property.
Enable Status Property
This property controls whether or not a block contributes code to the application. You may wish to use this property
if there is a need to temporarily remove a block during debugging or, for other reasons during development,
temporarily disable a block. This saves the effort of having to remove the block and then add it back later.
Composer Help
654
Route Flow Control Blocks
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
655
Route Flow Control Blocks
Log Common Block
Use a Log block to record information about an application. For example, you can log caller-recorded input
collected while an application is running or error messages. You can use the Log block for any of the following
purposes:
1. Informational – To log the application specific data
2. Error – for logging error details
3. Warning – to flag any warnings
4. Debug – for debugging
The categories in the Log Level property correspond to the above.
When used for a callflow, the Log block writes the log to the Genesys Voice Platform logs (Media Control Platform)
using the VoiceXML <log> tag.
The Log block has the following properties:
The Log block has no page exceptions.
Name Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
blocks.
Block Notes Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Exceptions Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
For callflows, invalid ECMAScript expressions may raise the following exception events: error.semantic. For
workflows, invalid ECMAScript expressions may raise the following exception events:
• error.log.ReferenceError
• error.illegalcond.SyntaxError
Composer Help
656
Route Flow Control Blocks
• error.illegalcond.ReferenceError
You can use custom events to define the ECMAScript exception event handling.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Label Property
This property applies to workflows only. It provides meta-data for the logging details.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
657
Route Flow Control Blocks
Looping Common Block
Use this block to iterate over a sequence of blocks multiple times in the following scenarios:
1. Iterate over a sequence of blocks based on a self-incrementing counter (FOR).
2. Iterate indefinitely until an exit condition is met (WHILE).
3. Iterate over records/data returned by the DB Data block (CURSOR/FOREACH). Also, populate variables if variables
mapping is defined.
4. Iterate over data returned by Context Services blocks (FOREACH). Also, populate variables if Variables Mapping is
defined.
5. Iterate over JSON Array defined in the application.
For scenarios 1 and 2 above, use the Looping block with a reference to the block retrieving the data. Scenarios 3
and/or 4 can be used in conjunction with 1 or 2, in which case the loop will exit when either of the exit conditions is
met.
Prerequisite
You must perform the following steps in order for the Looping block to be used to iterate over data returned by the
DB Data block:
1. Create a folder named Scripts in the Project folder.
2. In the Entry block, specify a value for the Scripts property such as ../include/DBRecordSetAccess.js
The Looping block has the following properties:
Name Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Block Notes Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Composer Help
658
Route Flow Control Blocks
Counter Initial Value Property
A Counter variable controls the number of loops. Specify the initial value by entering a positive integer (including
zero) or selecting the variable that contains the initial value. Composer will increment the Counter variable after
each iteration. The value of the Counter variable is available after the looping has exited. This is a mandatory
property if the Counter Variable property is specified.
Counter Variable Property
Enter a name for the variable used to store the Counter value or select the variable that contains the name. This is
a mandatory property if the Counter Initial Value property is specified.
Current Record Variable Property
Select a variable to be used to store the current record when iterating over records. Composer will assign the
current record after each iteration. This property is ignored if the Data Source Property is not set
Data Source Property
Specify a block reference to the DB Data or a Context Services block (with Variables Mapping support) that
provides the data to be iterated or select the variable that contains a JSON Array. This is a mandatory property if
Counter Initial Value and Counter Variable are not specified.
Exceptions Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks. You can also define custom events.
Counter Max Value Property
Specify the maximum value by entering a positive integer greater than the initial value or selecting the variable that
contains the maximum value. When the Counter variable reaches the maximum value, then the block connected to
the Exit port is executed. This is a mandatory property if the Counter Variable property is specified or if the Data
Source property is not specified.
Composer Help
659
Route Flow Control Blocks
Exit Expression Property
This property is optional. If specified, prior to each iteration the exit expression is evaluated. If true, the flow goes
out via the Exit port of the block. This condition is used in conjunction with max records (if Data Source is specified)
or Counter Max Value (if Counter Variable is specified). To enter an exit expression
1. Opposite the Exit Expression property, click under Value to display the
button.
2. Click the
button to open Expression Builder. For examples of how to use Expression Builder, see the Expression
Builder topic.
3. Create the exit expression and click OK.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Enable Status Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
660
Route Flow Control Blocks
Using the Looping Block (Counter-based without a Data Source)
1. Add a Looping block and connect the previous block outport to the Looping block.
2. Connect the Next outport to the sequence of connected blocks.
3. Connect the outport of the last block in the sequence in step 2 back to the looping block to form a loop.
4. Connect the Exit outport of the looping block to the block(s) to continue processing after the loop has exited. The
diagram when a looping block is used should appear as follows:
FOR loop: To iterate over the PromptCounter block 10 times, the following properties are set:
• Counter Initial Value is 1.
• Counter Variable Name is Variable(MyCounterVariable).
• Counter Max Value is 10.
WHILE loop: To iterate over the PromptCounter block until a condition is satisfied, the following property is set:
• Exit expression is loginSuccessful != true.
Composer Help
661
Route Flow Control Blocks
Using the Looping Block with a DB Data/Context Services Block
1. Add a Looping block and connect the DB Data/Context Services block outport to the Looping block.
2. Connect the Next outport to the sequence of connected blocks.
3. Connect the outport of the last block in the sequence in step 2 back to the looping block to form a loop.
4. Connect the Exit outport of the looping block to the block(s) to continue processing after the loop has exited. The
diagram when a looping block is used should appear as follows:
CURSOR/FOREACH loop: To iterate over the PromptColumn1 block for each record returned by the DBData1
block, the following property is set:
• Data Source = Block Reference (DBData1)
This example assumes variables were mapped for Column1 in DB Data1. If variables were not mapped, then
another Assign block would be needed to store the value into a variable and the variable is then specified in the
PromptColumn1 block.
Composer Help
662
Route Flow Control Blocks
Raise Event Block
Use the Raise Event block for Composer to throw custom events. You specify the event name and a message,
which is selection of a dynamic variable. It is a terminating block (can end an application instead of an Exit block).
Orchestration Server 8.1.2+ versions are required for Raise and Cancel Event blocks.
Also see CustomEvents.
The Raise Event block has the following properties:
• The Raise Event block has no page exceptions.
Name Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Block Notes Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Delay Property
Enter the timeout or select a variable. Maps to send delay.
Enter a value or select a variable. Examples are shown below using Timeout. This property supports the following:
• Literal integer value. For example: Timeout=4 & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'4s'"/>.
• Variable with integer value. For example: Timeout=Variable(4) & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'4s'"/>.
• Variable with string value. For example: Timeout=Variable('6') & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'6s'"/>.
• Variable with string value including unit. For example: Timeout=Variable('6ms') & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'6ms'"/>. In this case, the unit specified in the variable is
used instead of the static property unit.
Composer Help
663
Route Flow Control Blocks
Unit Property
Select seconds or milliseconds for the delay. Maps to <send delay>.
Condition Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Logging Details Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Log Level Property
Find this property's details under Common Properties for Callflow Blocks or Common Properties for Workflow
Blocks.
Event Property
Maps to send event. Enter a value or select a variable.
Parameters Property
Add a list of key-values. Maps to <param>.
Enable Status
This property controls whether or not a block contributes code to the application. You may wish to use this property
if there is a need to temporarily remove a block during debugging or, for other reasons during development,
temporarily disable a block. This saves the effort of having to remove the block and then add it back later.
Composer Help
664
Route Flow Control Blocks
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
665
Route Flow Control Blocks
SCXML State Block
Use to write custom SCXML code for Composer to include in the SCXML document that it generates based on the
workflow diagram. The SCXML State block has the following properties:
Name Property
Click under Value and enter the block name. Composer will use the name to identify the block in the diagram and
as the state name in the SCXML code.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Use to configure the exception nodes, with each port being hooked up to an event configured by you and
selectable using Add Custom Event. Find this property's details under Common Properties.
Body Property
This property contains all the executable content of the <state> element (<onentry>, <onexit>, <final>, …).
1. Click opposite Body under Value. This brings up the
2. Click the
Composer Help
button.
button to bring up the Configure Body dialog box.
666
Route Flow Control Blocks
3. Enter the executable content of the <state> element. . All content (children) of the state are editable. You also have
the option of adding code to <onentry> and <onexit>.
4. When through, click OK. Note: The editor does not validate against the SCXML schema.
Transitions Property
Use this property to add additional outports (transitions) using the block's custom Transitions dialog.
1. Click opposite Transitions under Value. This brings up the
2. Click the
button.
button to bring up the Configure Transitions dialog box.
3. Click Add. The dialog box now appears as shown below.
Composer Help
667
Route Flow Control Blocks
4. For each transition, specify at least one name, event, condition, or target (you are not required to complete all three
fields). An output port is created for every transition
• Name--Composer uses the name of the transition to label the outport.
• Event--Use to select the event that will trigger this transition.
• Condition--The guard condition for this transition. The transition is selected only if the condition evaluates
to true.
• Target--If true, an output port is created and the user can connect it to the block this transition will
transition to when it is executed. If false, the transition will not cause a change in the state configuration
when it is executed. The executable content contained in the transition will still be executed, so the
transition will function as a simple event handler.
If a target is set, an outport for that transition will appear and you can connect it to other blocks. If a target is not set,
an outport for that transition does not appear; in this case, you can add some SCXML code to handle the event.
When through in the dialog box, click OK.
Condition Property
Find this property's details under Common Properties.
Composer Help
668
Route Flow Control Blocks
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Using the SCXML State Block
The sample below demonstrates one way of using the SCXML State block to:
1. Register an Agent-DN (Needed in order to send a Logoff request)
2. Logoff Request for an Agent
3. Unregister the Agent-DN
Below is an example diagram using the SCXML State block and example code. If you do not have the Agent
information, retrieve it from the Configuration Database with FindCfgObjURS. Register the Agent, make the Agent
not ready, and then log out the Agent, all using the URS trek function. The details of this function can be found by
the http request—for example:
http://< urs host>:< urs http port>/urs/help/misc/trek
where the http port is defined in the URS options section http. Also you must enable this method by setting
methods to all in the same section.
Composer Help
669
Route Flow Control Blocks
For this example, create the following Project variable: vursFetchReqID.
[+] Restrictions, Disclaimer and Copyright Notice
Any authorized distribution of any copy of this code (including any related documentation) must reproduce the
following restrictions, disclaimer and copyright notice:
The Genesys name, the trademarks and/or logo(s) of Genesys shall not be used to name (even as a part of another
name), endorse and/or promote products derived from this code without prior written permission from Genesys
Telecommunications Laboratories, Inc.
The use, copy, and/or distribution of this code is subject to the terms of the Genesys Developer License Agreement.
This code shall not be used, copied, and/or distributed under any other license agreement.
THIS CODE IS PROVIDED BY GENESYS TELECOMMUNICATIONS LABORATORIES, INC. ("GENESYS") "AS
IS" WITHOUT ANY WARRANTY OF ANY KIND. GENESYS HEREBY DISCLAIMS ALL EXPRESS, IMPLIED, OR
STATUTORY CONDITIONS, REPRESENTATIONS AND WARRANTIES WITH RESPECT TO THIS CODE (OR
ANY PART THEREOF), INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. GENESYS AND ITS SUPPLIERS SHALL
NOT BE LIABLE FOR ANY DAMAGE SUFFERED AS A RESULT OF USING THIS CODE. IN NO EVENT SHALL
GENESYS AND ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, ECONOMIC,
INCIDENTAL, OR SPECIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ANY LOST REVENUES OR
PROFITS).
Copyright © 2008—2016 Genesys Telecommunications Laboratories, Inc. All rights reserved.
Composer Help
670
Route Flow Control Blocks
[+] Example SCXML Code
<onentry>
<script>
var KVPs = 'number:' + '704' +
'|tenant:' + system.TenantName + '|switch:' +
_genesys.ixn.interactions[system.InteractionID].location.media_server;
var vLocalParms = [2, KVPs ];
var ursFunc = 'urs/call/' +
_genesys.ixn.interactions[system.InteractionID].voice.connid +
'/func/FindConfigObject';
</script>
<session:fetch requestid="vursFetchReqID"
srcexpr="ursFunc" method="'urs'">
<param name= "params"
expr="uneval(vLocalParms)" />
</session:fetch>
</onentry>
Transitions:
Event:
session.fetch.done
Condition:
_event.data.requestid == vursFetchReqID
Body: ( if you want the data to be in JSON form )
var vEventData = _event.data.content.toString();
vEventData = vEventData.replace(/[.]/g, ",");
vEventData = vEventData.replace(/\\u000a/g,"");
vEventContent = JSON.parse(vEventData);
Results will be:
vEventContent =
{
dbid:159,
type:1,
number:"704",
name:"",
switchdbid:103,
switch:"SipSwitch",
Composer Help
671
Route Flow Control Blocks
tenantdbid:101,
tenant:"orchestration",
annex:{TServer:["true"]}
}
Event:
error.session.fetch
Condition:
_event.data.requestid == vursFetchReqID
Body: ( whatever you want to do if an error happens )
trekRegister:
<onentry>
<script>
var ursFunc = 'urs/trek/exec';
</script>
<session:fetch requestid="vursFetchReqID" srcexpr="ursFunc"
method="'urs'">
<param name= "switch" expr="'SipSwitch'"/>
<param name= "thisdn" expr="'704'" />
<param name= "event" expr="'RequestRegisterAddress'" />
</session:fetch>
</onentry>
Transitions:
Event:
session.fetch.done
Condition:
_event.data.requestid == vursFetchReqID
Body: ( if you want the TEvent data to be in JSON form )
var vEventData = _event.data.content.toString();
vEventData = vEventData.replace(/[.]/g, ",");
vEventData = vEventData.replace(/\\u000a/g,"");
vEventContent = JSON.parse(vEventData);
Results will be:
vEventContent =
{
event:"EventRegistered",
AddressType:1,
AddressInfoType:8,
AddressInfoStatus:1,
Composer Help
672
Route Flow Control Blocks
AgentID:"704",
ThisDN:"704",
AgentWorkMode:0,
ReferenceID:53,
TimeinSecs:1461257507,
TimeinuSecs:61000,
return:"ok",
Extensions:
{
AgentStatus:2,
AgentStatusTimestamp:1461257264,
AgentStatusReliability:0,
AgentLoginTimestamp:1461257264,
AgentLoginReliability:0,
AgentSessionID:"7MQNHM3BJ15RN2NS1ABJKTUT0K00006G",
AgentWorkMode:0,
status:0,
EmulateLogin:"true"
}
}
Event error.session.fetch – handled as in first example.
trekNotReady:
<onentry>
<script>
var ursFunc = 'urs/trek/exec';
</script>
<session:fetch requestid="vursFetchReqID" srcexpr="ursFunc"
method="'urs'">
<param name= "switch" expr="'SipSwitch'"/>
<param name= "thisdn" expr="'704'" />
<param name= "event" expr="'RequestAgentNotReady'" />
</session:fetch>
</onentry>
trekLogout:
<onentry>
<script>
Composer Help
673
Route Flow Control Blocks
var ursFunc = 'urs/trek/exec';
</script>
<session:fetch requestid="vursFetchReqID" srcexpr="ursFunc"
method="'urs'">
<param name= "switch" expr="'SipSwitch'"/>
<param name= "thisdn" expr="'704'" />
<param name= "event" expr="'RequestAgentLogout'" />
</session:fetch>
</onentry>
Composer Help
674
Route Flow Control Blocks
Subroutine Block
Use the Subroutine block to create reusable sub-modules (sub-workflows). You can invoke external SCXML
documents or use a sub-workflow created using Composer. The input and output parameters names will be
automatically picked from the sub-workflow created by Composer. Composer supports passing variables between a
workflow and sub-workflow.
Also see Using Composer Shared Subroutines.
Important
Starting with Composer 8.1.3 versions, the callflow diagram Subdialog block and the workflow
diagram Subroutine block use absolute paths with the Project name to refer to the location of the
selected resource in the Workspace, e.g., workspace:///WFM/Workflows/
subroutine.workflow. Renaming or copying Projects requires a manual update to change the
Project name in the Subroutine and Subdialog blocks.
Creating a Subroutine Using A Sub-Workflow
1. Create the main workflow diagram file using New > Other > Composer > Workflow diagram > Main Workflow.
2. After designing the main workflow diagram, create the sub-workflow diagram using New > Other > Composer >
Workflow diagram > Sub-Workflow.
3. In the Entry Block of the sub-workflow diagram, enter the parameters, which will be passed as input from the main to
the sub-workflow diagram.
4. Design the sub-workflow diagram.
Composer Help
675
Route Flow Control Blocks
5. In the Exit block of the sub-workflow diagram, select the variables, which will be returned back to the called main
diagram.
6. In the main diagram, use the Subroutine Block to call the newly created sub-workflow and the input and output
parameters. For input/output synchronization, use the Uri property of the Subroutine block to select the sub-workflow
diagram.
Now the Parameters property can be used for the Parameter Synchronization. The main diagram implicitly parses
the sub-workflow parameters and lists them in the Parameter settings dialog as shown below.
Composer Help
676
Route Flow Control Blocks
7. Define the value for the input type variables and collect the returning output type variables in a variable.
The Subroutine block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
Uri Property
The Uri property specifies the destination (URL or Composer Project) depending on the value of the Type property.
To set a URL destination for the Uri property (Type property is set to URL):
1. Select the Uri row in the block's property table.
2. In the Value field, type a valid URL. Variables should not be selected as all subroutines are fetched by Orchestration
Server before it starts executing the application at which time variables do not exist.
To set a Project destination for the Uri property (Type property is set to ProjectFile):
1. Click the Uri row in the block's property table.
Composer Help
677
Route Flow Control Blocks
2. Click the
button to open the Uri dialog box.
3. Select a workflow in the list.
4. Click OK to close the dialog box.
Type Property
The Type property sets the type of the invoked subroutine. There are two options:
• URL--The invoked sub-workflow can be found at the location specified in the Uri property.
• ProjectFile--The invoked sub-workflow is another workflow in the Project.
To select a value for the Type property:
1. Select the Type row in the block's property table.
2. In the Value field, select URL or ProjectFile from the drop-down list.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Composer Help
678
Route Flow Control Blocks
Parameters Property
Use the Parameters property to specify parameters to pass to the invoked sub-workflow. To specify parameters:
The URI field must contain a value.
1. Click the Parameters row under Value.
2. Click the
button to open the Subroutine Input Output Parameters dialog box.
3. Click the Add button to enter parameter details.
4. In the Parameter field, accept the default name or change it.
5. From the Type drop-down list, select input, output, or inout:
input
Input parameters are variables submitted to the subworkflow.
output
Output parameters are variables that the sub-workflow
returns and will be reassigned back to the current
workflow.
input/output
Inout parameters are parameters that act as both input
and output.
6. In the Expression drop-down list, select from among the variables shown, type your own expression, or click the
button to use Expression Builder.
7. In the Description field, type a description for this parameter.
8. Click Add again to enter another parameter, or click OK to finish.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
679
Route Flow Control Blocks
User Data Block
You can use in a routing application to update an interaction's User Data and for attaching Business Attributes,
Categories and Skills. Corresponds to function _genesys.ixn.setuData under Functions in the Orchestration
Developer's Guide and available in Expression Builder. This block generates ECMAScript inside an SCXML state
and does not rely on External Service Protocol via <session:fetch>. For manually attaching categories to an
interaction, the User Data block can be used and then a Branching block can be (optionally) used to segment
interactions to different logical branches based on the different categories. Important! See Mandatory User Data For
UCS Blocks.
Important Notes
• Do not assign the value of a variable named data to a key-value pair. This will not work since the generated code also
declares a variable named data.
• When the Wait for Event property is set to true and User Data blocks are used in both the parallel legs, use Internal
Key Prefix to reliably verify the user data attachment.
The User Data block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Assign Data Property
This property specifies one or more key-value pairs to add to the interaction’s User Data. To specify key-value
pairs, click in the Value column to display the
button and click it to bring up the dialog. Data from various
sources can be attached as well as free form key value pairs can be specified (Default). However, note that only
one category can be used in a block. Switching categories will erase previously specified values.
Composer Help
680
Route Flow Control Blocks
UserData1.gif
1. Default This option can be used to specify both the key name and the key value as literals or variables.
Note: In case the key or value contains special characters that may require encoding e.g. '<', '-', or quotes, define a
variable and set its value to this literal and use the variable as the value.
2. Business Attributes This picks up specific business attributes and if connected to Configuration Server, shows a list
of values configured for these attributes.
3. Skills One or more skills can be specified. If connected to Configuration Server, a list of skills is shown.
4. Categories This option requires an active connection to Configuration Server and supports attaching categories
defined in Configuration Server as well as Relevancy for the category. Relevancy is a number from 1 to 100 that
reflects the minimum relevance percentage that each classification category must have in order for Classification
Server to consider an interaction as belonging to that category.
Click the Add button to add a key-value pair of the selected type. When done, click Ok to dismiss the dialog and
Save the diagram.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Composer Help
681
Route Flow Control Blocks
Exceptions Property
Find this property's details under Common Properties.
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable InteractionId. Can be used
for "interaction-less" processing for scenarios where the InteractionId variable is not automatically initialized, but
instead must wait for an event. An example would be an SCXML application triggered by a Web Service that does
not add an interaction. Background: Previous to 8.1.1, Composer did not expose an InteractionId property.
Instead, when ORS started processing an interaction, a generated SCXML application automatically initialized the
system variable, InteractionId. This variable was then used internally by Routing and certain eServices blocks when
interacting with ORS. With the introduction of support for Interaction-less processing, you can now define a specific
event to initialize InteractionId, or not define an event at all. For scenarios with an interaction (IPD
Diagram/Wait For Event=interaction.present for example), you may keep the default value for the
Interaction ID property. The default value is the system variable InteractionId, which is initialized automatically in
this case. For other scenarios (any scenario where the system variable InteractionId is not set), you may choose to:
1. Not use blocks that require an Interaction ID
2. And/or set the Interaction ID property to a meaningful value
3. And/or assign a meaningful value to the InteractionId system variable
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
682
Route Flow Control Blocks
Internal Key Prefix
Starting with 8.1.420.14, Composer attaches an internal key along with the configured user data. When the Wait for
Event property is set to true and User Data blocks are used in both parallel legs, use Internal Key Prefix (the
Show Advanced Properties button) to reliably verify the user data attachment. The value of the internal key is the
time stamp of the application change. This key is used internally to verify whether the
interaction.udata.changed event has been received. If parallel User Data blocks are used in a workflow, the
internal keys might mismatch, which leads to a timeout of User Data blocks. You can configure the internal key
prefix either directly through this property or through variables. The configured value will be attached as a prefix to
the existing Composer-generated internal key; for example:
Composer_<Internal Key Prefix>_internal_key = <timestamp>
Important
Use the Internal Key Prefix only when setting user data from two parallel legs and waiting for
confirmation in both legs.
Wait For Event Property
This property allows you to choose whether to wait for the user data changed event before transitioning to the next
block.
1. Click Wait for Event under Property.
2. Under Value, select one of the following:
• True
• False
Timeout Property
Select the variable that contains the timeout value for the user data change event. This property supports the
following:
• Literal integer value. For example: Timeout=4 & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'4s'"/>.
• Variable with integer value. For example: Timeout=Variable(4) & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'4s'"/>.
• Variable with string value. For example: Timeout=Variable('6') & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'6s'"/>.
Composer Help
683
Route Flow Control Blocks
• Variable with string value including unit. For example: Timeout=Variable('6ms') & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'6ms'"/>. In this case, the unit specified in the variable is
used instead of the static property unit.
Composer Help
684
Route Flow Control Blocks
Wait Event Block
Use to have ORS transition out when one of the defined events is received and the associated condition is true.
The Wait block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Event Property
Enter a value or select the variable that contains the data associated with the event that makes ORS transition out.
Transitions Property
Use this property to define the events/condition pairs that makes ORS transition out. ORS does not need all the
events in the list to occur in order to transition out, but only one of them. The condition is optional. If not set, it
behaves as if condition was true (ORS transitions out of the block). To specify events/condition pairs:
1. Click the Transitions row in the block's property table.
2. Click the
button to open the Configure Transitions dialog box.
3. Click Add to add an entry.
4. Enter the Event.
5. Click under Conditions.
6. Click the
button to use Expression Builder to define the conditions.
Condition Property
Find this property's details under Common Properties.
Composer Help
685
Route Flow Control Blocks
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Timeout Property
Select the variable that contains the timeout value or keep the default of 30 (added in 8.1.440.18). If the timeout
expires before one of the targets is available, the interaction is routed to the error port (if the Exception property is
configured for the block). This property supports the following:
• Literal integer value. For example: Timeout=4 & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'4s'"/>.
• Variable with integer value. For example: Timeout=Variable(4) & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'4s'"/>.
• Variable with string value. For example: Timeout=Variable('6') & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'6s'"/>.
• Variable with string value including unit. For example: Timeout=Variable('6ms') & Unit=second <send
event="'WaitEvent1.wait.timeout'" delay="'6ms'"/>. In this case, the unit specified in the variable is
used instead of the static property unit.
Unit Property
Select the unit of measure for the timeout.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
686
Routing Blocks
Routing Blocks
The table below summarizes the Routing blocks.
Cancel
Removes a route request from a queue and from target
consideration.
Default Route
Instructs URS to route a voice interaction to the default
destination.
Queue Interaction
Places an a non-voice interaction into an existing queue.
Force Route
Force Universal Routing Server to route the interaction to
the first target type without any other operations.
Query
Queries the status of a route request.
Single Step Transfer
Use this block for both voice and multimedia interactions
to force Universal Routing Server (URS) to route the
interaction to the first target type (ACD Queue,
Destination Label, or Routing Point) without any other
operations.
Route Interaction
Routes a non-voice interaction to one or more target
objects.
Routing Rule
Selects routing rules that currently exist in the
Configuration Database, such as those created with
Interaction Routing Designer.
Stop Interaction
Requests Interaction Server to stop processing an
interaction.
Target
Routes a voice interaction to a target. Can be used for
percentage and/or conditional routing using threshold
expressions.
Update
Updates the criteria associated with an outstanding
submit request.
Ideal Agent Block
Routes to the most ideal agent to handle an interaction
when more than one is available.
Also see:
• Percent and Conditional Routing
• Statistics Manager and Builder.
Composer Help
687
Routing Blocks
Cancel Block
Use the Cancel block to remove a route request from a queue and from target consideration. Can be used for both
voice and multimedia interactions. For more information, see the Orchestration Server Developer’s Guide, Queue
Interface, Action Elements, <cancel> Action Element.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Composer Help
688
Routing Blocks
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable system.ANI. If the queue is
present, then all outstanding requests are cleared from the defined queue. The interactionid attribute is only used in
conjunction with the queue attribute and is only needed when your application is handling multiple interactions. For
more information, see the Orchestration Server Developer’s Guide, Queue Interface, Action Elements, <cancel>
Action Element, Interactionid.
Request ID Property
Specify either:
• a variable holding the request ID of an outstanding queuing request;
• or a Target/Route Interaction block (Block Reference)
Queue Property
Optional. To specify a queue:
1. Click under Value to display the
button.
2. Click Add to open the Configure Queue dialog box. Do one of the following:
• If you are connected to Configuration Server, select Configuration Server. Select the queue from the
Value field. This is the queue containing the route request to be cancelled. Queues listed here were
previously defined with the Interaction Queue block.
• Select Literal and enter the name of the queue in the Value field.
• Select Variable and select the variable that contains the value.
3. Click OK.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
689
Routing Blocks
Default Routing Block
Instructs URS to route the interaction to the default destination, as specified by the default DNs at the Routing Point
or by the URS configuration option default_destination. When you use the Default Route block in a strategy, it
sends the interaction to that destination. Once set this will be applicable for the entire duration of the strategy unless
overridden by a Default Routing block in the workflow execution.
The Default Route block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
Hints Property
This property is for future use by Orchestration Server. Its use will be described in various action elements
referenced in the Orchestration Server wiki.
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable InteractionId.
Can be used for interaction-less processing for scenarios where the InteractionId variable is not automatically
initialized, but instead must wait for an event. An example would be an SCXML application triggered by a Web
Service that does not add an interaction.
Background: Previous to 8.1.1, Composer did not expose an Interaction ID property. Instead, when ORS started
processing an interaction, a generated SCXML application automatically initialized the system variable,
Composer Help
690
Routing Blocks
InteractionId. This variable was then used internally by Routing and certain eServices blocks when interacting with
ORS.
With the introduction of support for Interaction-less processing, you can now define a specific event (IPD Diagram
Wait_For_Event_Property) to initialize InteractionId, or not define an event at all.
For scenarios with an interaction (IPD Diagram/Wait For Event=interaction.present for example), you may keep the
default value for the Interaction ID property. The default value is the system variable InteractionId, which is
initialized automatically in this case.
For other scenarios (any scenario where the system variable InteractionId is not set), you may choose to:
1. Not use blocks that require an Interaction ID.
2. And/or set the Interaction ID property to a meaningful value.
3. And/or assign a meaningful value to the InteractionId system variable.
Detach Property
Controls whether the Orchestration Platform should <detach> an interaction from the current session before routing
to the specified targets. When this property is set to true, the interaction is detached from the current session.
Note: A Project properties option, Interaction Detach, in the Orchestration Options dialog can generate the
detach attribute in the <ixn:redirect> tag in the Routing blocks. See Detaching Interactions from Sessions.
Detach Timeout Property
Use to specify how long to attempt to <detach> if an initial attempt fails with an invalidstate error. Specify the
timeout in milliseconds. If set to 0, no further attempt to detach is made. After the timeout, if the <detach> is not
successful, no further attempts will be made and the block will attempt to reclaim the interaction back into the
current session using <attach>.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Composer Help
691
Routing Blocks
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Pass Context Property
This property accepts true/false values. When set to true and Detach is also true:
• URL built with the block name is stored into this interaction's user data (user data key name is
'_composer_originating_session') just before detaching the interaction. That URL will be used by the orchestration
destination session (that is the new orchestration session started to handle the interaction after it was redirected to an
other routing point) to request the context of the originating session. After the processing for this block is over, the
originating session is blocked until the destination session actually reads the context. The context consists of the
system and user variables.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
692
Routing Blocks
Force Route Block
Use this block for both voice and multimedia interactions to force Universal Routing Server (URS) to route the
interaction to the first target type (ACD Queue, Destination Label, or Routing Point) without any other operations.
The interaction is then routed unconditionally, i.e., URS does not check the status of the destination. Warning!
Force should always be thought of as a last plan of action and therefore used infrequently. The Force Route block
has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Destination Property
Use this property to specify the forced routing destination. The property also supports specifying a Resource type,
which allows you to specify key-values. Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
From Property
A value expression, which returns the address that this interaction is to be redirected from. Set this property to the
variable DNIS for voice interactions, or to the variable InteractionID for multimedia interactions. Composer will
automatically set this property to DNIS or to InteractionID when the Destination property is set (respectively) to a
Target Block or to a Route Interaction block. When the Destination property is not assigned a Block Reference
value, you must select the appropriate From value.
1. Click under Value to display the
2. Click the
Composer Help
button.
button to open the From dialog box.
693
Routing Blocks
3. Select one of the following:
• Literal. For Value, you can specify:
• An agent: <agent id>
• A place: <place id>
• A DN: <number>
• An e-mail address: <username>@<host> or _origin or _origin.all or _udata
• A customer number: <dn number>
• A target format addresses: <Target DN>
See the Orchestration Server Documentation Wiki for those literals that apply to multimedia interactions only.
• Variable. If the variable contains a string, see Literal above. If the value is a JSON object, Value can refer
to:
• An agent: {agent: <agent id>, type:A}
• An agent group: {agent: <name>, type:AG}
• A place: {place: <place id>, type:AP}
• A place group: {place: <name>, type:PG}
• A DN: {dn: <number>, type:Q or RP or DN, switch:<switch name>}
• An interaction queue: {id: <q name>, type:iq }
• A workbin: {id: <wb name>, type:wb<owner>}
• A customer number: {dn: <number>}
• A target format addresses: Resource object from the queue.submit.done event (the Target Block
Resource Selected property).
See the Orchestration Server Documentation Wiki for those literals that apply to multimedia interactions only.
• Configuration Server to select the from Switch//DN if connected.
• Resource to select a resource using properties that will form a JSON object.
See the Orchestration Server Documentation Wiki.
4. Click OK to close the From dialog box.
Condition Property
Find this property's details under Common Properties.
Composer Help
694
Routing Blocks
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable InteractionId. Can be used for
interaction-less processing for scenarios where the InteractionId variable is not automatically initialized, but
instead must wait for an event. An example would be an SCXML application triggered by a Web Service that does
not add an interaction. Background: Previous to 8.1.1, Composer did not expose an Interaction ID property.
Instead, when ORS started processing an interaction, a generated SCXML application automatically initialized the
system variable, InteractionId. This variable was then used internally by Routing and certain eServices blocks when
interacting with ORS. With the introduction of support for Interaction-less processing, you can now define a specific
event IPD Wait_For_Event property to initialize InteractionId, or not define an event at all. For scenarios with an
interaction (IPD Diagram/Wait For Event=interaction.present for example), you may keep the default value for the
Interaction ID property. The default value is the system variable InteractionId, which is initialized automatically in
this case. For other scenarios (any scenario where the system variable InteractionId is not set), you may choose to:
1. Not use blocks that require an Interaction ID
2. And/or set the Interaction ID property to a meaningful value
3. And/or assign a meaningful value to the InteractionId system variable
Hints Property
This property is for future use by Orchestration Server. Its use will be described in various action elements
reference in the Orchestration Server wiki.
Detach Property
Controls whether the Orchestration Platform should <detach> an interaction from the current session before routing
to the specified targets. When this property is set to true, the interaction is detached from the current session.
Note: A Project properties option, Interaction Detach, in the Orchestration Options dialog can generate the
detach attribute in the <ixn:redirect> tag in the Routing blocks. See Detaching Interactions from Sessions.
Composer Help
695
Routing Blocks
Detach Timeout Property
Use to specify how long to attempt to <detach> if an initial attempt fails with an invalidstate error. Specify the
timeout in milliseconds. If set to 0, no further attempt to detach is made. After the timeout, if the <detach> is not
successful, no further attempts will be made and the block will attempt to reclaim the interaction back into the
current session using <attach>.
Type Property
Use to define the type of redirection processing that is to be done. For more information and individual values, see
the Orchestration Server Documentation Wiki.
Enable Status Property
Find this property's details under Common Properties.
Pass Context Property
This property accepts true/false values. When set to true and Detach is also true:
• URL built with the block name is stored into this interaction's user data (user data key name is
'_composer_originating_session') just before detaching the interaction. That URL will be used by the orchestration
destination session (that is the new orchestration session started to handle the interaction after it was redirected to an
other routing point) to request the context of the originating session. After the processing for this block is over, the
originating session is blocked until the destination session actually reads the context. The context consists of the
system and user variables.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Force Routing to an External Number
Scenario: When force routing and doing a single-step consult to a routing point, where an external is dialed.
If you get these error messages:
expr='Error message: Cannot get link and/or device from call'. ‘invalid source”
Composer Help
696
Routing Blocks
Check that the system.ThisDN variable has the right value when it reaches the Force Route block.
Composer Help
697
Routing Blocks
Queue Interaction Block
Use this block to place a multimedia (non-voice) interaction into an existing queue created with the Interaction
Queue block. The generated SCXML code instructs Universal Routing Server to request Interaction Server to move
the current interaction into the specified queue. You can select an existing interaction queue from within this block
or specify a variable that contains the name of an interaction queue. You can also send an interaction to a queue in
another IPD within the same Project. The selected interaction queue appears as a Queue Reference block in the
interaction process diagram. Important Note! Each interaction path in a workflow for multimedia interactions should
end with one of these blocks: Stop Interaction, Queue Interaction, or Route Interaction. Also see information on the
App Terminate Ixn On Exit variable.
Use Case
The logic of a routing workflow may determine some attributes of an interaction, such as by looking at the Subject
line of an inbound e-mail, and then use different interaction queues as a method of segmenting these different types
of interactions. You could use the Branching block for this purpose. The Queue Interaction block has the following
properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Composer Help
698
Routing Blocks
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Interaction Queue Name Property
Use this property to specify the queue where the interaction is to be placed.
1. Click under Value to display the
button.
2. Click the button to open the Interaction Queue dialog box. Your dialog box may include existing IRD business
processes with associated interaction queues underneath.
3. Select an interaction queue to which the incoming interaction has to be sent.
4. Click OK.
Starting with Release 8.1.410.14, you can use a queue defined in referenced Projects. For more information, see
AddingQueues.
Starting with Release 8.1.440.18, the Interaction Queue property supports selecting a queue dynamically through a
variable. The selected variable will be used in the generated code in the destQueue variable 'id' option.
Example:
<state id="_reserved_QueueInteraction1_redirect">
<onentry>
<script>
var destQueue = {'type':'IQ','id':var0};
</script>
<ixn:redirect detach="true" requestid="App_QueueInteraction1['requestid'
</onentry>
</state>
Composer Help
699
Routing Blocks
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable InteractionId. Can be used for
"interaction-less" processing for scenarios where the InteractionId variable is not automatically initialized, but
instead must wait for an event. An example would be an SCXML application triggered by a Web Service that does
not add an interaction. Background: Previous to 8.1.1, Composer did not expose an Interaction ID property.
Instead, when ORS started processing an interaction, a generated SCXML application automatically initialized the
system variable, InteractionId. This variable was then used internally by Routing and certain eServices blocks when
interacting with ORS. With the introduction of support for Interaction-less processing, you can now define a specific
event (IPD Diagram Wait For Event property) to initialize InteractionId, or not define an event at all. For scenarios
with an interaction (IPD Diagram/Wait For Event=interaction.present for example), you may keep the default value
for the Interaction ID property. The default value is the system variable InteractionId, which is initialized
automatically in this case. For other scenarios (any scenario where the system variable InteractionId is not set), you
may choose to:
1. Not use blocks that require an Interaction ID
2. And/or set the Interaction ID property to a meaningful value
3. And/or assign a meaningful value to the InteractionId system variable
Hints Property
This property is for future use by Orchestration Server. Its use will be described in various action elements
reference in the Orchestration Server wiki.
Detach Property
Controls whether the Orchestration Platform should <detach> an interaction from the current session before
queueing it. When this property is set to true, the interaction is detached from the current session.
Note: A Project properties option, Interaction Detach, in the Orchestration Options dialog can generate the
detach attribute in the <ixn:redirect> tag in the Routing blocks. See Detaching Interactions from Sessions.
Detach Timeout Property
Use to specify how long to attempt to <detach> if an initial attempt fails with an invalidstate error. Specify the
timeout in milliseconds. If set to 0, no further attempt to detach is made. After the timeout, if the <detach> is not
successful, no further attempts will be made and the block will attempt to reclaim the interaction back into the
current session using <attach>.
Composer Help
700
Routing Blocks
Pass Context Property
This property accepts true/false values. When set to true and Detach is also true:
• URL built with the block name is stored into this interaction's user data (user data key name is
'_composer_originating_session') just before detaching the interaction. That URL will be used by the orchestration
destination session (that is the new orchestration session started to handle the interaction after it was redirected to an
other routing point) to request the context of the originating session. After the processing for this block is over, the
originating session is blocked until the destination session actually reads the context. The context consists of the
system and user variables.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
701
Routing Blocks
Query Block
Use the Query block to query the status of a route request. Can be used for both voice and multimedia interactions.
For more information, see the Orchestration Server Developer’s Guide, Queue Interface, Action Elements,
<query> Action Element.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Composer Help
702
Routing Blocks
Request ID Property
Request ID is an input parameter. Specify either:
• a variable holding the request ID of an outstanding queuing request;
• or a Target/Route Interaction block (Block Reference)
Expected Wait Time Property
Select a variable to contain the expected wait for the route request. Also see:
• Expected Wait Time
• Login Size
• Position in Queue
• Request ID
• Total Size
• Queue Poll Rate
Login Size Property
Select the variable to contain the number of agents logged in currently targeted for the route request (you must
have URS 8.1.3+). The selected variable will be populated with the respective output value obtained from the
operations described in the Expected Wait Time property.
Position in Queue Property
Click the down arrow under Value and select the variable to contain the position that the route request currently has
in the queue. The selected variable will be populated with the respective output value obtained from the operations
described in the Expected Wait Time property.
Priority Property (Queue)
To use this optional property, click the down arrow under Value and select the variable, which contains a value
expression returning the current priority of the route request in the queue. For more information, see
http://www.w3.org/TR/scxml/#ValueExpressions.
Composer Help
703
Routing Blocks
Total Size Property
Select the variable to contain the total number of agents that could be targeted for the route request. The selected
variable will be populated with the respective output value obtained from the operations described in the Expected
Wait Time_Property. You must have installed Universal Routing Server 8.1.3+.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
704
Routing Blocks
Route Interaction Block
Use this block to route a multimedia (non-voice) interaction to one or more target objects (use the Target block for
voice interactions). You can also route to a target based on the value of a Skill expression. An interaction process
diagram associates routing targets with queues, either interaction queues or virtual queues. When defining Route
Interaction block properties, you have the option of selecting queues for both the existing interaction and a new
outgoing interaction that may be created. You can also define a new interaction queue from within the block so you
don't have to navigate away. Important Note! Each interaction path in a workflow for multimedia interactions should
end with one of these blocks: Stop Interaction, Queue Interaction, or Route Interaction. Also see information on the
App Terminate Ixn On Exit variable.
Use Case
• An inbound interaction hits a virtual route point, initiating a workflow routing strategy.
• The workflow strategy looks up data for the interaction in the customer database to determine the last agent who
helped this customer and to determine the intent of the customer interaction.
• Next, the workflow sets priority to the interaction based on media type (for example, e-mail or chat) and customer
segment (for example, Gold or Silver). Note: Setting the priority of an interaction is a Universal Routing Server
function that is not directly related to target selection, but is normally done prior to target selection as a way to
segment interactions.
• If the last agent exists, the workflow routes to the agent based on variable, setting a timeout of five seconds.
• If the last agent used is unavailable (timeout exceeded), the workflow routes to an Agent Group that is properly skilled
to handle this type of interaction.
• There is an Escalation interaction queue configured as an outgoing interaction queue, so the agent can select this
interaction queue from the desktop application in case he cannot handle the interaction himself and he needs to
escalate it.
The Route Interaction block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Composer Help
705
Routing Blocks
Condition Property
Find this property's details under Common Properties.
Detach Property
Controls whether the Orchestration Platform should <detach> an interaction from the current session before routing
to reserved targets. When this property is set to true, the interaction is detached from the current session.
Note: A Project properties option, Interaction Detach, in the Orchestration Options dialog can generate the
detach attribute in the <ixn:redirect> tag in the Routing blocks. See Detaching Interactions from Sessions.
Detach Timeout Property
Use to specify how long to attempt to <detach> if an initial attempt fails with an invalidstate error. Specify the
timeout in milliseconds. If set to 0, no further attempt to detach is made. After the timeout, if the <detach> is not
successful, no further attempts will be made and the block will attempt to reclaim the interaction back into the
current session using <attach>.
Activity Property
Optional. Click the down arrow and select the variable that contains the Activity to be used for Workforce
Management-based routing.
Clear Targets Property
Optional. Select true if targets listed in the object should be retained after the interaction moves on through the
workflow and encounters other Route Interaction object. For more information, see the Clear Targets description for
the voice interaction Target block.
Cut Off Time Property
Optional. Click the down arrow and select the variable that contains the cut-off time (in seconds) that defines the
time window in which a potential target must be assigned to the activity defined in the Activity property above.
Composer Help
706
Routing Blocks
Enable Status Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
Expected Wait Time Property
To use this optional property, click the down arrow under Value and select a variable to contain the expected wait
time that the interaction will be given in the queue. The selected variable will be populated with the respective
output value obtained from the operations described next.
Starting with 8.1.4, the Target block and Route Interaction block provide an integrated mechanism to playback the
estimated waiting time to customers, including defining the playback repeat interval. To implement this mechanism,
the Target and Route Interaction blocks have new properties (variables) to capture the result of queue.query.done.
• Expected Wait Time
• Login Size
• Position in Queue
• Request ID
• Total Size
• Queue Poll Rate
If any of the above five properties are set, the application does a queue:query after the
queue.submit.requestid.
The queue:query is repeated every x secs until queue.submit.done is received. There is no additional outport.
The variables used for the five properties can be used in a Busy Treatment block, such as Play Application. Or you
may put the Target block in a parallel leg and use the variables (for example, to speak the estimate wait time) in
another leg.
If the call is distributed right away, then the application is presented an error.queue.query event (the
queue:query is processed after the queue.submit.done). If nothing is done, that unexpected error will
terminate the application. As a result:
• When assigning a variable to any of the above five properties, you will be prompted to automatically add a target-less
exception for error.queue.query.
• Diagram validation will show a warning if one of the five properties is set and no handler is defined in the Target block
(or one of its parents, // or the Entry block).
Composer Help
707
Routing Blocks
Hints Property
This property is for use by Orchestration Server. Its use is described in various action elements referenced in the
Orchestration Developer's Guide.
It can be used to specify extension data in Treatment blocks. To do this, use an ECMAScript block to create an
ECMAScript object and assign properties to it. Then specify this object in the Hints property by selecting the
variable whose content is a JSON object. This object is passed to ORS at runtime.
For example, define variable myExtensions and myHints and set them as shown below in an ECMAScript block.
myExtensions={'NO_ANSWER_TIMEOUT':'10','NO_ANSWER_OVERFLOW':'recall','NO_ANSWER_ACTION':'notread
myHints = { ‘extensions’ : myExtensions ); Then specify myHints as the value of the Hints
property in the Route Interaction object.
Include Requests from Previous Blocks Property
This property controls whether the block should transition if a target from previous Target block is selected even
though it may not be specified in the current block. Set it to true for cascaded target lookups. If set to false, the
block will wait until a target specified in the current block is selected for routing.
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable InteractionId. Can be used for
"interaction-less" processing for scenarios where the InteractionId variable is not automatically initialized, but
instead must wait for an event. An example would be an SCXML application triggered by a Web Service that does
not add an interaction. Background: Previous to 8.1.1, Composer did not expose an Interaction ID property.
Instead, when ORS started processing an interaction, a generated SCXML application automatically initialized the
system variable, InteractionId. This variable was then used internally by Routing and certain eServices blocks
when interacting with ORS. With the introduction of support for Interaction-less processing, you can now define a
specific event IPD Wait_For_Event_property to initialize InteractionId, or not define an event at all. For
scenarios with an interaction (IPD Diagram/Wait For Event=interaction.present for example), you may keep
the default value for the Interaction ID property. The default value is the system variable InteractionId, which
is initialized automatically in this case. For other scenarios (any scenario where the system variable InteractionId is
not set), you may choose to:
1. Not use blocks that require an Interaction ID
2. And/or set the Interaction ID property to a meaningful value
3. And/or assign a meaningful value to the InteractionId system variable
Composer Help
708
Routing Blocks
Logged In Only Property
Select true or false to indicate whether only logged in agents can pull interactions out of this Workbin. Use to
prevent logged out agents from pulling interactions. Selecting true = logged in agents only.
Logging Details Property
Find this property's details under Common Properties.
Login Size Property
Select the variable to contain the number of agents logged in that can be targeted for the request (you must have
URS 8.1.3+). The selected variable will be populated with the respective output value obtained from the operations
described in the Expected Wait Time property.
Log Level Property
Find this property's details under Common Properties.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Pass Context Property
This property accepts true/false values. When set to true and Detach is also true:
• URL built with the block name is stored into this interaction's user data (user data key name is
'_composer_originating_session') just before detaching the interaction. That URL will be used by the orchestration
destination session (that is the new orchestration session started to handle the interaction after it was redirected to an
other routing point) to request the context of the originating session. After the processing for this block is over, the
originating session is blocked until the destination session actually reads the context. The context consists of the
system and user variables.
Composer Help
709
Routing Blocks
Position in Queue Property
Click the down arrow under Value and select the variable to contain the position that the interaction will be given in
the queue. The selected variable will be populated with the respective output value obtained from the operations
described in the Expected Wait Time property.
Priority Property (Queue)
To use this optional property, click the down arrow under Value and select the variable, which contains a value
expression returning the priority that the interaction will be given in the queue. For more information, see
http://www.w3.org/TR/scxml/#ValueExpressions.
Priority Property (Target Selection)
To use this optional property, click the down arrow under Value and select the variable, which contains a value
expression returning the priority that the interaction will be given during target selection.
Queue Poll Rate Property
Select the variable to contain how frequently the block will poll for latest values and populate selected variables.
Queue for Existing Interaction Property
Optional. To specify a queue for an existing interaction:
1. Click under Value to display the
button.
2. Click Add to open the Queue for Existing Interaction dialog box. Do one of the following:
• If you are connected to Configuration Server, select Configuration Server.
Select the interaction queue from the Value field. This is the interaction queue to which the incoming
interaction has to be sent.
Queues listed here were previously defined with the Interaction Queue block.
• Select Literal and enter the name of the interaction queue in the Value field.
• Select a variable (introduced in 8.1.420).
3. Click OK.
Composer Help
710
Routing Blocks
Queue for Outgoing Interaction Property
Use to create a new interaction. Only one new interaction may be created. The agent must close the existing
interaction with no further processing allowed.
1. Click under Value to display the
button.
2. Click Add to open the Queue for Outgoing Interaction dialog box. Do one of the following:
• If you are connected to Configuration Server, select Configuration Server.
Select the interaction queue from the Value field. This is the interaction queue to which any new
interaction generated has to be sent. For example, the agent might create a new e-mail to a supervisor
as a result of handling another interaction. Queues listed here were previously defined with the
Interaction Queue block.
• Select Literal and enter the name of the interaction queue in the Value field.
• Select a variable (introduced in 8.1.420).
3. Click OK.
Request ID Property
Set to a meaningful value or keep the default value, which is the system variable system.ANI. The selected variable
will be populated with the respective output value obtained from the operations described in the Expected Wait
Time property.
Route Property
Use this property to set the SCXML <queue:submit> route attribute.
1. Click under Value to display the
2. Click the
button.
button to open the Route dialog box.
3. Select one of the following:
• Variable. Then for Value, select the variable that contains either True (default) or False.
• Literal. Then for Value, enter either True or False.
When set to false, the functional module will not attempt to route the associated interaction.
Statistic Property
Optional. If you wish to route based on the value of a statistic:
Composer Help
711
Routing Blocks
1. Click under Value to display the
2. Click the
button.
button to open the Statistic dialog box.
3. Select one of the following:
• Literal. For Value, you can write in a URS-predefined statistic or a custom statistic created with
Statistics Builder.
• Variable.
• Configuration Server to select a statistic. In order to select a statistic, you must be connected to
Configuration Server and have set the option to use URS Predefined statistics.
4. Click OK when through in the dialog box.
The URS predefined statistics are described in the Universal Routing 8.1 Reference Manual.
The statistic you select is used by Universal Routing Server to determine which target to route the interaction to if
more than one target is available. After defining a complete set of available agents (taking agent capacity rules
into consideration, if configured), URS applies the selection criteria specified in the Target block, which can include
using the minimum or maximum value of the statistic (see Statistics Order property).
Statistics Order Property
Optional. This property can work with the Statistics property. Select Max or Min to specify whether the interaction
should be routed to the target with the maximum or the minimum value of the statistic.
Target Component Selected
Select a variable containing the agent-level target to which the interaction was routed or should be routed to
definitively.
• If the target specified in <submit> and selected for routing is of type Agent, Place, Queue, or Routing Point, this
contains the target itself.
• If the desired target type is Agent Group, Place Group, or Queue Group, the function returns the agent, place, or
queue from the corresponding group to which the interaction was sent.
The target format is Name@StatServerName.Type. The selected variable will be updated with the target
information after receiving a queue.submit.done.
Target Deviation From Ideal Agent
New with 8.1.410.14. Select a variable to hold the result of calling the Universal Routing Server (URS)
TargetListSelected function to calculate a value indicating an agent target's deviation from ideal agent to handle an
Composer Help
712
Routing Blocks
interaction. When the property is assigned to a variable, Composer makes a call to URS right after getting
queue.submit.done:
'urs/call/@' + system.InteractionID + '/func/TargetListSelected?params=[]'
URS returns a string similar to the sample below:
return:ok|dn:7001|rdn:7001|switch:SIP_Switch|agent:KSippola|place:SIP_Server_Place1|target_locat
If the Set Ideal Agent block is used before the Route Interaction block, the URS reply includes a mismatch keyvalue pair. The below sample was obtained with: SetIdealAgent[Billing > 6] and the target with Skill
Billing == 5).
return:ok|dn:7001|rdn:7001|switch:SIP_Switch|agent:KSippola|place:SIP_Server_Place1|target_locat
In this sample, the Target Deviation From Ideal Agent variable is assigned the (integer) value (i.e., 2) of the
mismatch key-value pair when available, undefined otherwise.
Target Object Selected
Select a variable containing the high-level target (one that you specify in a <submit>) to which the interaction was
routed or should be routed to definitively. If a skill expression is used, the function
returns: ?:SkillExpression@statserver.GA or even ?GroupName:SkillExpression@statserver.GA.
The target format is Name@StatServerName.Type. The selected variable will be updated with the target
information after receiving a queue.submit.done.
Target Queue Selected Property
Select a variable containing the DN and the switch name of the target to which the interaction was routed or should
be routed to definitively. The selected variable will be updated with the target information after receiving a
queue.submit.done.
Total Size Property
Select the variable to contain the total number of agents that can be targeted for the request. The selected variable
will be populated with the respective output value obtained from the operations described in the Expected Wait
Time_Property. You must have installed Universal Routing Server 8.1.3+.
Targets Property
Use this property to specify routing targets and for percentage or conditional routing.
Composer Help
713
Routing Blocks
1. If you have not already done so, connect to Configuration Server.
2. Opposite the Targets property, click under Value.
3. Click the ... button. The Targets dialog box opens.
The figure above shows the dialog box when Min or Max is selected for the Statistics Order property. In this case, a Stat Server column appears. If
you select Percentage for the Statistics Order property, a Weight column appears instead of a Stat Server column (see Statistics Order property
above).
4. Click Add in the Targets dialog box.
5. Click under Type to display a down arrow.
6. You can route based on various criteria. Click the down arrow and select the target Type (defined in Genesys
Administrator): Agent, AgentGroup, Place, PlaceGroup, Skill, List object or Variable. At runtime, the application reads
the key-value pairs in the targets section. The name part of the key-value pair can be used at your convenience.
Only the value part of the key-value pair is read by the application and must be defined as indicated under <targetid>
in the Orchestration Developer's Guide, Parameter Elements. For example, a valid value is: ksippo@.A
7. Click under Name to display to bring up a dialog box. Targets of the selected Type appear for selection.
Composer Help
714
Routing Blocks
8. Select the name of routing target and click OK. You have the option to add another target.
9. If applicable, select a Stat Server. Or, if you selected Percentage for the Statistics Order property, enter the Weight
column.
10. Starting with 8.1.440.18, you can check agent availability in the Route Interaction block before executing
<queue:submit> by selecting true for Check Agent Availability. This "skip targets" feature can improve the
efficiency of finding an agent by enhancing or relaxing the target criteria without waiting until the routing timeout is
reached in the Route Interaction block. If multiple/mixed target types are used in the dialog, the skip target-enabled
target types will take precedence and will cause Route Interaction block execution to be skipped if no agent is
available. In this case, a warning message appears stating that the Route Interaction block uses different target types
with skip targets enabled.
11. The Route Interaction block adds a new "Skip Target" outport in the workflow diagram if Check Agent availability is
enabled for one of the target types in the block. Note: This feature is not supported for the following target types: List
Objects, Skill expressions, and Variables.
12. Starting with 8.1.440.18, you also have the option of using the threshold functions for conditional routing. You can use
Threshold to define additional conditions the target must meet to be considered as valid routing target. Click the
button under Threshold to open Expression Builder where you can create a threshold expression. See Creating
Threshold Expressions in the Target block topic. Threshold is not supported for the following target types: List Objects
and Variables.
13. Click OK when through in the Targets dialog box.
Timeout Property
Optional. Enter an integer to specify the time in seconds an interaction waits for an available target or keep the
default of 90 (added in 8.1.440.18). If the timeout expires before one of the targets is available, the interaction is
routed to the error port (if the exception property is configured for the block).
Virtual Queue Property
Optional. A virtual queue a logical queue, not a physical queue. Interactions can be queued to a virtual queue if the
specified targets are unavailable. To select a virtual queue.
1. Click under Value to display the
2. Click the
button.
button to open the Virtual Queue dialog box.
3. Select an Alias, Switch, and Number. For more information on these fields, start with the Framework Configuration
Manager Help.
4. Click OK.
Workbin Property
Use this property if you wish to route this interaction to an agent workbin. To select a workbin:
Composer Help
715
Routing Blocks
1. Click under Value to display the
2. Click the
button.
button to open the Workbin Properties dialog box.
3. Select a workbin previously defined with the Workbin block.
4. Optional. Click the Show Unpublished Workbins box.
5. Click OK.
Starting with 8.1.440.18, Composer adds support for dynamic Workbin selection.
• Composer adds variable support in Route interaction Block, Workbin property.
• A new Workbin Type property is added.
• You can use variables in the Route Interaction block Targets property when the Workbin property is used.
Workbin Type Property
This property, added in 8.1.440.18, works along with the Workbin property. See the Workbin property above. Select
one of the following from the dropdown: Agent, Agent Group, Place, Place Group.
• If a Workbin block object is selected in the Workbin property, this property is auto-populated with the Workbin Block
Owner property value.
• If a variable is selected in the Workbin property, you can edit the Workbin Type property to set the corresponding
Owner type.
Composer Help
716
Routing Blocks
Routing Rule Block
Note: The Routing Rule block does not create routing rules. Instead, you select routing rules that currently exist in
the Configuration Database, such as those created with Interaction Routing Designer as described in the Universal
Routing 8.1.x Reference Manual.
Routing rules specify the method of target selection for voice interactions. Composer supports using the following
types of routing rules:
• Load Balancing
• Percentage
• Statistics
The Routing Rule block has the following properties:
Name Property
Find this property's details under Common Properties. Enter the name of the Routing Rule block for the workflow.
The name of the routing rule in the Configuration Database is entered in the Rule Name property below.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Composer Help
717
Routing Blocks
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Pass Context Property
This property accepts true/false values. When set to true and Detach is also true:
• URL built with the block name is stored into this interaction's user data (user data key name is
'_composer_originating_session') just before detaching the interaction. That URL will be used by the orchestration
destination session (that is the new orchestration session started to handle the interaction after it was redirected to an
other routing point) to request the context of the originating session. After the processing for this block is over, the
originating session is blocked until the destination session actually reads the context. The context consists of the
system and user variables.
Rule Name Property
Use this property to specify the routing rule name.
1. Click under Value to display the
2. Click the
button.
button to open the Rule Name dialog box.
3. From the Type dropdown menu, select Literal, Variable, or Configuration Server
• If you select Literal, enter the name of an existing routing rule exactly how it appears in the Configuration
Database. In Configuration Manager, Routing Rules are stored in the Transactions folder.
• If you select Variable, select the name of the variable that contains routing rule.
• If you select Configuration Server and are connected, existing routing rules appear for selection based
on the Rule Type property entry. Select a routing rule.
4. Click OK to close the dialog box.
Rule Type Property
Click the down arrow under Value and select one of the following:
Composer Help
718
Routing Blocks
• Load Balancing—Use to distribute voice interactions to Universal Routing Server (URS) queues according to statistic
StatEstimatedWaitTime as described in the Universal Routing 8.1 Reference Manual.
• Percentage—Use to distribute voice interactions to targets based on a set percentage for each target. When this
criterion is used, every target must be supplied with a non-negative integer percentage.
• Statistics—Use to route voice interactions. It uses a routing rule so that URS can obtain the values of defined
statistics for targets from Stat Server.
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable InteractionId.
Can be used for "interaction-less" processing for scenarios where the InteractionId variable is not
automatically initialized, but instead must wait for an event. An example would be an SCXML application triggered
by a Web Service that does not add an interaction.
Background: Previous to 8.1.1, Composer did not expose an InteractionId property. Instead, when ORS
started processing an interaction, a generated SCXML application automatically initialized the system variable,
InteractionId. This variable was then used internally by Routing and certain eServices blocks when interacting with
ORS.
With the introduction of support for Interaction-less processing, you can now define a specific event (IPD Event
Property) to initialize InteractionId, or not define an event at all.
For scenarios with an interaction (IPD Diagram/Event=interaction.present for example), you may keep the
default value for the Interaction ID property. The default value is the system variable InteractionId, which is
initialized automatically in this case.
For other scenarios (any scenario where the system variable InteractionId is not set), you may choose to:
1. Not use blocks that require an Interaction ID
2. And/or set the Interaction ID property to a meaningful value
3. And/or assign a meaningful value to the InteractionId system variable
Hints Property
This property is for future use by Orchestration Server. Its use will be described in various action elements
reference in the Orchestration Server wiki.
Detach Property
Controls whether the Orchestration Platform should <detach> an interaction from the current session before routing
the interaction. When this property is set to true, the interaction is detached from the current session.
Composer Help
719
Routing Blocks
Note: A Project properties option, Interaction Detach, in the Orchestration Options dialog can generate the
detach attribute in the <ixn:redirect> tag in the Routing blocks. See Detaching Interactions from Sessions.
Detach Timeout Property
Use to specify how long to attempt to <detach> if an initial attempt fails with an invalidstate error. Specify the
timeout in milliseconds. If set to 0, no further attempt to detach is made. After the timeout, if the <detach> is not
successful, no further attempts will be made and the block will attempt to reclaim the interaction back into the
current session using <attach>.
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
720
Routing Blocks
Set Ideal Agent Block
Starting with Composer release 8.1.410.14, workflow diagrams add a Set Ideal Agent block to the Routing palette,
which allows you to select the most ideal agent to handle an interaction when more than one agent is available. You
can also use this functionality to select the most ideal interaction when there is more than one interaction competing
for the same agent. The Composer Set Ideal Agent block invokes the Universal Routing Set Ideal Agent
functionality described in Using Agent Skills for Ideal Agent Selection.
This block has two specific Set Ideal Agent properties: Interaction ID (default: system.InteractionID) and
Target (provides support for Skill Expression Builder).
Important
In order to use this block, you must have installed Universal Routing Server release 8.1.400.22 or
later.
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties. The error.session.fetch exception is supported.
Condition Property
Find this property's details under Common Properties.
Composer Help
721
Routing Blocks
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable system.InteractionID. Can
be used for interaction-less processing for scenarios where the InteractionId variable is not automatically initialized,
but instead must wait for an event. An example would be an SCXML application triggered by a Web Service that
does not add an interaction.
ORS Extensions Property
Starting with release 8.1.4, Composer blocks used to build routing applications (with the exception of the
Disconnect and EndParallel blocks) add a new ORS Extensions property.
Enable Status Property
Find this property's details under Common Properties.
Target Property
Use this property to specify a skill expression.
1. If you have not already done so, connect to Configuration Server.
2. Opposite the Target property, click under Value to display the
3. Click the
button.
button. Expression Builder opens with Target selected and available Skills listed below.
4. Construct a skill expression to select the ideal agent as described in Using Agent Skills for Ideal Agent Selection.
[+] Set Ideal Agent Code Sample
Composer Help
722
Routing Blocks
<state id="SetIdealAgent">
<onentry>
<log expr="_sessionid + ': Inside Set Ideal Agent Block: SetIdealAgent'" />
<script>var skillexpr = ["Billing >10"];</script>
<session:fetch requestid="App_SetIdealAgent['requestid']" srcexpr="'urs/call/@' + system.InteractionID + '/f
<param name= "params" expr="uneval(skillexpr)" />
</session:fetch>
</onentry>
<transition event="session.fetch.done" cond="_event.data.requestid==App_SetIdealAgent['requestid']" target="$
<log expr="'Composer Application:default Block: SetIdealAgent'" />
<log expr="'Session FETCH DONE'" />
<script>storeEvent("SetIdealAgent", _event);</script>
</transition>
</state>
Composer Help
723
Routing Blocks
Single Step Transfer Block
Use this block for both voice and multimedia interactions to force Universal Routing Server (URS) to route the
interaction to the first target type (ACD Queue, Destination Label, or Routing Point) without any other operations.
The interaction is then routed unconditionally, i.e., URS does not check the status of the destination. Warning!
Force should always be thought of as a last plan of action and therefore used infrequently. The Force Route block
has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Destination Property
Use this property to specify the routing transfer destination. Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties.
From Property
A value expression, which returns the address that this interaction is to be redirected from. Set this property to the
variable DNIS for voice interactions, or to the variable InteractionID for multimedia interactions. Composer will
automatically set this property to DNIS or to InteractionID when the Destination property is set (respectively) to a
Target Block or to a Route Interaction block. This property also supports a Resource type,which allows you to
specify key-values. For additional information, see the Force Route Block.
Composer Help
724
Routing Blocks
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Interaction ID Property
This property specifies the ID of the Interaction to detach from this ORS session. Set to a meaningful value or keep
the default value, which is the system variable InteractionId. Find more details under Common Properties.
Hints Property
This property is for future use by Orchestration Server. Its use will be described in various action elements
reference in the Orchestration Server wiki.
Detach Property
Use for multi-site routing. Controls whether the Orchestration Platform should <detach> an interaction from the
current session before routing to the specified targets. When this property is set to true, the interaction is detached
from the current session.
Detach Timeout Property
Use to specify how long to attempt to <detach> if an initial attempt fails with an invalidstate error. Specify the
timeout in milliseconds. If set to 0, no further attempt to detach is made. After the timeout, if the <detach> is not
successful, no further attempts will be made and the block will attempt to reclaim the interaction back into the
current session using <attach>.
Composer Help
725
Routing Blocks
Pass Context
This property accepts true/false values. When set to true and Detach is also true:
• URL built with the block name is stored into this interaction's user data (user data key name is
'_composer_originating_session') just before detaching the interaction. That URL will be used by the orchestration
destination session (that is the new orchestration session started to handle the interaction after it was redirected to an
other routing point) to request the context of the originating session. After the processing for this block is over, the
originating session is blocked until the destination session actually reads the context. The context consists of the
system and user variables.
Pass Context Timeout
This property can be passed a positive integer value or a variable. This is the maximum time to wait (in seconds) for
the destination session to read the originating session's context.
Enable Status Property
Find this property's details under Common Properties.
Composer Help
726
Routing Blocks
Stop Interaction Block
Use this block to send a request to Interaction Server to stop processing an interaction. This results in an
notification to Universal Contact Server, or to a third party server, that processing for this interaction is finished. You
can also:
• Select a reason code (configurable through Configuration Manager or Genesys Administrator), which is attached to the
interaction.
• Indicate that the interaction should be deleted from the Universal Contact Server database.
Important Note! Each interaction path in a workflow for multimedia interactions should end with one of these
blocks: Stop Interaction, Queue Interaction, or Route Interaction.
Also see information in App_Terminate_Ixn_On_Exit variable.
Use Case
• A customer support engineer is using Siebel to track customer support tickets. After a specific ticket is updated by the
engineer, an action that he takes in Siebel triggers a Siebel workflow.
• That workflow initiates an event that generates, using the Genesys Open Media API, an interaction process diagram,
which in turn, triggers a routing workflow.
• The workflow specifies that an e-mail should be created.
• The workflow specifies that the e-mail should be sent to the customer, from a Customer Support e-mail address,
copying specific interested parties.
• If the process of sending the e-mail fails for any reason, the e-mail can be queued to a different queue (for example, so
it can be manually reviewed and perhaps the customer will be notified by phone instead).
• If the process of sending out the e-mail is successful, the workflow would specify that the processing of the interaction
should be stopped, and will provide the appropriate reason. This information will be part of a notification that is
provided to Universal Contact Server or to a third party server.
The Stop Interaction block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Composer Help
727
Routing Blocks
Exceptions Property
Find this property's details under Common Properties.
Condition Property
Find this property's details under Common Properties.
Logging Details Property
Find this property's details under Common Properties.
Log Level Property
Find this property's details under Common Properties.
Enable Status Property
Find this property's details under Common Properties.
Notify Property
Use this property to select a Universal Contact Server or third party media server to notify about the stop processing
action.
1. Click under Value to display the
button.
2. Click the button to open the Notify dialog box.
3. Under Notify, you have the option of checking the box to delete the interaction from Universal Contact Server
Database.
4. Click one of the following buttons: Notify UCS or Notify Third Party Server.
5. Under Details:
If you selected Notify Third Party Server:
• Opposite Application Type, click the down arrow to select the type in the Configuration Database. See
the Application Type note below.
Composer Help
728
Routing Blocks
• Opposite Application Name, click the
button. In the resulting Notify dialog box, select Literal if you
wish to manually enter the name. Select Configuration Server if you wish to select it from the Value field.
• Opposite Service, click the
• Opposite Name, click the
server.
button to enter the type of notification service for the third party server.
button to enter the name of the notification service for the third party
If you selected Notify UCS, select the Application Name of the Universal Contact Server. The remaining fields are
disabled.
Note on Application Type
The supported Application Type names are:
• ChatServer
• ClassificationServer
• ContactServer,
• EmailServer
• GenericClient
• GenericServer
• ThirdParyApp
• ThirdPartyServer
Interaction Server treats any connection in its Connections list as an ESP server, except some well known types,
like DBServer, Stat Server, T-Server, and URS. Any new Application Type will also be treated as an ESP server. No
special configuration is required.
With Application Name, if there is a connection to it from Interaction Server, then the specific server will be called
(or its backup). If only type is specified, Interaction Server will select any one of the applications in its Connections
list having the specified type. This works fine with specific types, like E-mail server or Chat Server, but for generic
types, there can be multiple different applications with the same generic type. So to call a generic server, the name
must be specified.
Load balancing can still be used. Starting from 7.6.1 ESP server clusters are supported. The cluster application
name (with type ApplicationCluster) can be specified in ESP request. In this case, Interaction Server will load
balance between applications the cluster has connections to. Interaction Server will also always check that the ESP
server supports the required tenant (has it in tenants list) and will only load balance between ESP servers that
support required tenant. </li>
6. Click OK to close the Notify dialog box.
Use Notify Property
Select true to notify Universal Contact Server or the third party server about the stopping the processing of the
interaction including the reason.
Composer Help
729
Routing Blocks
Interaction ID Property
Set to a meaningful value or keep the default value, which is the system variable InteractionId.
Can be used for "interaction-less" processing for scenarios where the InteractionId variable is not automatically
initialized, but instead must wait for an event. An example would be an SCXML application triggered by a Web
Service that does not add an interaction.
Background: Previous to 8.1.1, Composer did not expose an Interaction ID property. Instead, when ORS started
processing an interaction, a generated SCXML application automatically initialized the system variable,
InteractionId. This variable was then used internally by Routing and certain eServices blocks when interacting with
ORS.
With the introduction of support for Interaction-less processing, you can now define a specific event (IPD
Wait_Event property) to initialize InteractionId, or not define an event at all.
For scenarios with an interaction (IPD Diagram/Wait Event=interaction.present for example), you may keep
the default value for the Interaction ID property. The default value is the system variable InteractionId, which is
initialized automatically in this case.
For other scenarios (any scenario where the system variable InteractionId is not set), you may choose to:
• Not use blocks that require an Interaction ID
• And/or set the Interaction ID property to a meaningful value
• And/or assign a meaningful value to the InteractionId system variable
Reason to Stop Interaction Property
Use this property to get the stop processing reason code.
1. Click under Value to display the
button.
2. Click the button to open the Reason to Stop Interaction dialog box.
3. Opposite Type, select one of the following as the source for the reason code:
• Literal to enter the reason code manually in the Value field.
• Configuration Server to select a predefined reason code as Business Attribute in the Value field.
• Variable to select a variable for the reason code in the Value field.
4. Click OK to close the dialog box.
Composer Help
730
Routing Blocks
ORS Extensions Property
Starting with 8.1.4, Composer blocks used to build routing applications (with the exception of the Disconnect and
EndParallel blocks) add a new ORS Extensions property.
Composer Help
731
Routing Blocks
Target Block
Use to route an voice interaction to a target (use Route Interaction for multimedia interactions). Also use for
percentage routing and conditional routing using the threshold functions.
• See note on excluding agents before Target blocks.
The Target block has the following properties:
Name Property
Find this property's details under Common Properties.
Block Notes Property
Find this property's details under Common Properties.
Activity Property
Starting with 8.1.410.03, you can specify a Workforce Management Activity for routing and a related Cut Off Time
(see property below) to specify a timeout. Select the variable that contains the WFM Activity.
Clear Targets Property
Click the down arrow and select true or false (default). If set to true, URS retains the targets listed in the block are
after the interaction moves on through the strategy and encounters other Target blocks.
• This option is only applicable if more than one Target block is used along the same path in the strategy. It has nothing
to do with how agents specified within the block are evaluated for availability. If no additional Target blocks are
included in the path and no agent is available, the interaction is default-routed. If more than one agent is available,
URS uses the statistic specified in the Statistics property to determine which agent receives the interaction.
• If Clear Targets = false and the current interaction encounters a Target block later in the strategy, the targets in this
block are added to those of the next Target block. If Clear Target = true, the targets are not added to the list of any
Target block that the interaction encounters later in the strategy.
For example, assume two Target blocks are used in a strategy with the first Target block configured with three
agents and a timeout of 30 seconds and the second Target block configured with four new agents and a timeout of
Composer Help
732
Routing Blocks
60 seconds. The Clear Targets setting determines which agents are considered as targets for an interaction.
• Clear Targets = true. In the first Target block, URS waits for 30 seconds for any of the three agents to become
available. If none are available before the timeout expires, the strategy resumes. When the second Target block is
encountered, URS only considers these four new agents as possible targets during the 60-second timeout. URS does
not consider (clears) the first three agents as possible targets.
• Clear Targets = false and none of the agents listed in the first Target block are available. When the interaction
encounters the second Target block, URS considers the first three agents and the four new agents as possible targets
during the 60-second timeout set in this object. If no more Target blocks follow the second Target block and no agents
are available before the timeout expires, the interaction is routed to the error port.
Condition Property
Find this property's details under Common Properties.
Cut Off Time Property
Starting with 8.1.430.03, you can specify the timeout number of seconds to wait for retrieving an Workforce
Management Activity.
Code generation:
<queue:submit interactionid="system.InteractionID" requestid="App_Target_SCXML['requestid']" route="false" timeo
<queue:targets>
<queue:activity cutofftime="10" name="varWFMActivity"/>
</queue:targets>
</queue:submit>
Detach Property
Controls whether the Orchestration Platform should <detach> an interaction from the current session before routing
to reserved targets. When this property is set to true, the interaction is detached from the current session.
Note: A Project properties option, Interaction Detach, in the Orchestration Options dialog can generate the
detach attribute in the <ixn:redirect> tag in the Routing blocks. See Detaching Interactions from Sessions.
Detach Timeout Property
Use to specify how long to attempt to <detach> if an initial attempt fails with an invalidstate error. Specify the
timeout in milliseconds. If set to 0, no further attempt to detach is made. After the timeout, if the <detach> is not
successful, no further attempts will be made and the block will attempt to reclaim the interaction back into the
current session using <attach>.
Composer Help
733
Routing Blocks
Enable Status Property
Find this property's details under Common Properties.
Exceptions Property
Find this property's details under Common Properties. Note: Exceptions for Busy treatment blocks should be
handled in the Target block to which they are connected and not in the Busy treatment blocks themselves. Busy
treatment exceptions are raised as the error.queue.submit exception and not as exceptions listed in individual
treatment blocks.
Expected Wait Time Property
To use this optional property, click the down arrow under Value and select a variable to contain the expected wait
time that the interaction will be given in the queue. The selected variable will be populated with the respective
output value obtained from the operations described next.
Starting with 8.1.4, the Target block and Route Interaction block provide an integrated mechanism to playback the
estimated waiting time to customers, including defining the playback repeat interval. To implement this mechanism,
the Target and Route Interaction blocks have new properties (variables) to capture the result of queue.query.done.
There is also a property (Advanced properties) to configure the poll period (1 second by default).
• Login Size
• Position in Queue
• Request ID
• Total Size
• Queue Poll Rate
If any of the above five properties are set, the application does a queue:query after the
queue.submit.requestid.
The queue:query is repeated every x secs until queue.submit.done is received. There is no additional outport.
The variables used for the five properties can be used in a Busy Treatment block, such as Play Application. Or you
may put the Target block in a parallel leg and use the variables (for example, to speak the estimate wait time) in
another leg.
If the call is distributed right away, then the application is presented an error.queue.query event (the
queue:query is processed after the queue.submit.done). If nothing is done, that unexpected error will
terminate the application. As a result:
• When assigning a variable to any of the above five properties, you will be prompted to automatically add a target-less
exception for error.queue.query.
Composer Help
734
Routing Blocks
• Diagram validation will show a warning if one of the five properties is set and no handler is defined in the Target block
(or one of its parents, // or the Entry block).
From Property
A value expression, which returns the address that this interaction is to be redirected from. Set this property to the
variable DNIS for voice interactions, or to the variable InteractionID for multimedia interactions. Composer will
automatically set this property to DNIS or to InteractionID