Jump to: navigation, search

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 ButWorkflow.gif 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.
  1. In the Main workflow tab, select Empty Diagram and click Next.
  2. Select the parent Project.
  3. 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.
  4. Select the Workflows folder in the Project you just created.
  5. 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.

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 theOpenDialogBoxButton.gif button.
  3. Click theOpenDialogBoxButton.gif 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 theOpenDialogBoxButton.gif button.
  7. Click theOpenDialogBoxButton.gif 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 ExpBldrBut.gif 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.
YourFirstApp2.gif
  1. 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).
  1. Opposite Operators, click the button for the equal sign (=). data.DNIS= now appears under Expression field.
  2. Type a single quote after the equal sign.
  3. Type the 800 number. For this example, use 8004662809.
  4. Type a single quote after the number.  Expression field now shows data.DNIS='8004662809'.
  5. Click the ValidateExpBut.gif button to validate the expression. No syntax error found appears above.
  6. Click OK to close the Expression Builder dialog box and return to the Branching Conditions dialog box.
  7. In the Branching Conditions dialog box, select Add. This time Condition1 appears under Node Name.
  8. Change Condition1 to 8008361447.
  9. Click opposite 8008361447 under Expression. This brings up the OpenDialogBoxButton.gif button.
  10. Click the OpenDialogBoxButton.gif button to bring up Expression Builder.
  11. 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.

YourFirstApp3.gif

  1. 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.
  1. Connect the second port to the Target block below it.
  2. Connect the third port to the Target block below it.  The routing strategy diagram (8.0.3) now appears as shown below.
YourFirstApp4.gif
  1. 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 OpenDialogBoxButton.gif button.
  4. Click the OpenDialogBoxButton.gif 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 OpenDialogBoxButton.gif button.
YourFirstApp6.gif
  1. Click the OpenDialogBoxButton.gif button. Targets of type AgentGroup appear for selection. An example is shown below.
YourFirstApp5.gif
  1. Select a routing target.  In this case, select EnglishAgents and click OK.
  2. 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 OpenDialogBoxButton.gif button.
  3. Click the OpenDialogBoxButton.gif button to open the Statistics dialog box.
YourFirstApp7.gif

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
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.  

  1. For the sample strategy, select StatTimeInReadyState.
  2. In the Properties tab, opposite the Statistics Order property, click under the Value column to display a drop-down menu.
  3. 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

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 Validate icon.gifon 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 Generate code icon.gif 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.
  2. Test the workflow. 
  3. Deploy the workflow.
This page was last edited on November 30, 2018, at 18:46.
Comments or questions about this documentation? Contact us for support!