You are here: Use Connect > Routing > Call Flows

Call Flows

From the main menu bar, click Routing > Call Flows. This allows administrators to create and modify call flows in the system.

Purpose

A call flow is a customized interactive voice response (IVR) engine that uses logic and interaction nodes to identify the appropriate queue a caller should be placed in.

Callers navigate through the call flow and make selections before eventually being connected with an agent. Clarity Connect uses skills-based routing to assign calls to agents with the appropriate expertise rather than simply choosing the next available agent. This means that agents skilled in Support are assigned a Support skill and can accept calls from the Support queue.

Queues are associated with a particular business unit (Support, for example), as well as a particular skill or set of skills an agent must have to accept calls from that queue. Callers are queued via Set Queue or Enqueue nodes in a call flow.

Agents can have multiple skill sets, and each skill can be assigned a priority level via the Skill Templates page or Agent Profiles page. The most experienced agents can be assigned a first-level skill, while less experienced agents can be assigned a second, third, fourth, or even fifth-level skill. This ensures callers are routed to the most experienced agents first.

Call flows can be used for both voice and IM sessions. Each Prompt and Message node must have the synthesized text field populated and Voice Prompt selected when using the call flow for IM sessions. Transfer nodes will be treated as hang ups as IM conversations cannot be transferred the way audio sessions can.

Actions

Miscellaneous

Click the Hide icon (eye) to conceal a call flow (Figure 1).

Click Show Hidden Call Flows to display concealed call flows.

Click the Details icon to view a read-only version of the selected call flow in the visual editor. This call flow can be exported but it cannot be modified.

Click the Edit icon to edit the selected call flow.

Click the Rollback icon to revert to the previous version of the selected call flow.

Create New Call Flow

Click New Call Flow to create a new call flow. This will open the visual editor and display a default first node (Figure 2). The visual editor creates complex call flows (Figure 3).

Figure 1 Call Flows page

Figure 2 Quick IVR visual editor

Figure 3 Call flow sample

The Edit pane (left side of Quick IVR Editor) allows the user to edit call flow nodes (Figure 4). Click Edit to modify the node.

Edit (next to Publish) also allows the user to specify a default Start node and Error node, import the flow from a previously exported Connect call flow file, restore the most recent published version (and lose any current edits), or discard the current edits.

If an error occurs during a session, the call will be sent to the Error node.

Figure 4 Edit pane

The Edit pane will populate with various customizable controls depending on the current node or flow being modified (Figure 5).

Click Add to add a new node.

Figure 5 Edit Message settings

The visual editor (right side of Quick IVR Editor) shows a graphical representation of the call flow. When zoomed in, click and drag to move within the visual editor. Use the zoom controls in the lower right to take a closer look at a particular section of the call flow. Click a node to load its properties in the Edit pane.

Nodes are intelligently color-coded (Table 1). There are four types of nodes, including Check, Set, User Interaction, and End State nodes. Oval-shaped decision nodes do not have any user interaction. Arrows connecting nodes together display labels detailing information about the relationship.

Table 1 Node Color-Coding
Node Color Node Description
Blue This is an end-state node.
Dark gray This is a standard logic node.
Light gray This is a user interaction node.
Gold This is the currently selected node.

Click Publish to immediately place the call flow into effect. Call flows that contain missing information or are incomplete cannot be published; an error message will appear if the call flow is broken, and a red MISSING label will display in the visual editor where additional information is required.

Click Save Image… to save a local image of the call flow.

Add Nodes

Check Nodes

The following items are types of Check nodes:

Hover the pointer over the question mark icon for tool tips on each node type.

Coalesce

This node reads CSV values from an extra item and allows the user to select the values it contains. It then selects the corresponding values from other CSV-formatted extra items.

Check Config

This node checks a portal configuration setting based on the Config Key. If the Config Key value matches a Mappings value, the call is sent to the matching node. Otherwise, the call is sent to the default node.

Check Extra Item

This node checks the value of the session’s extra item value based on the extra item key name.

Extra items can be set using Set Extra Item, Prompt, Set Queue, or Custom nodes. If the value matches a Mappings value, the call is sent to the matching node. Otherwise, the call goes to the default node. 

Check Priority

This node checks the priority value (which can be set in the Set Priority node) and, based on the comparison value, routes the session to one of the two next nodes.

Check Queue

This node checks the value of the assigned queue if it has been set using a Set Queue node.

If there is a matching value in the Queue Mappings section, this node sends the call to the matching node. If there is no mapping or the queue has not been set, the call is sent to the default node.

Check Queue State

This node sends a call based on a queue’s current state. If the session has been sent through a Set Queue node, compare it against the assigned queue. Otherwise, specify another queue to compare it against.

The node performs comparisons against the number of agents currently online in the queue, the number of agents currently available in the queue, the number of calls currently waiting in queue, or the number of seconds the oldest call has been waiting in queue. The selected parameter is compared against the Comparer field and the session is sent to one of the two configured next nodes depending on the result of the comparison.

Check Time

This node checks the configured portal business hours, queue business hours, holiday hours, or a custom time range entered by the user. The session is sent to one of three nodes based on whether the call was received within or outside of the configured hours, or if it is currently a holiday.

Check URI

This node checks either the incoming phone number or the caller’s SIP address.

If the mappings list contains a number matching the specified URI, the session is sent to the appropriate next node. Otherwise, the call is sent to the default node.

The mapping entry will still match even if the URI is a partial number.

External Data Access

For more information on the External Data Access node, see External Data Access Node

This node accesses data from an external resource and brings the returned value into a Connect extra items variable to be used throughout a call flow. This node supports connecting to a SQL server database, Windows Communication Foundation (WCF) Web Service, and HTTP Web Service.

If Database is selected, additional fields will prompt for both a SQL server database connection string and the query to run.

If HTTP Web Service is selected, enter the HTTP Web Service Address.

If WCF Web Service is selected, enter the WCF Web Service Address and then click Read WSDL. Select Contract and Method from the drop-down list and enter any parameters that should be sent to the service call.

After selecting the desired external communication method and entering the appropriate data, click Assign Return Values. This shows all potential return values from the external access call and allows the user to assign them to an extra item by typing the name of the variable.

Additional options allow the user to set a timeout and choose whether the session sends to the next node upon either an error or call completion. The Coalesce node may be used if multiple results are returned from the query.

Check Modality

This node checks the modality of the current session and determines whether the session is an IM session or a voice call. The session is then sent to one of two nodes depending on its modality.

Check User Presence

This node allows the call flow to query the Agent Finder service to check a user’s Skype for Business presence (available, logged off, or in another state). The result of the retrieved presence can also be saved to an extra item.

DoMath

This node performs mathematical expressions and string comparisons within the call flow. A routing decision is based on whether the result of the mathematical expression or string comparison is greater than (>), less than (<), or not equal to (!=) a defined comparison value.

Enter a formula in the Calculation field to mathematically evaluate it. To evaluate a string or number in a non-mathematical way (i.e., to perform a comparison on a phone number, account number, etc.), place a single quote mark (‘) on either side of the value. Enter an expression or string in the Comparison field to compare the result of the calculation to.

Do not mix numbers and strings.

The Calculation field also supports the following functions:

  • To trim a string either right or left, starting at the index, N characters, use Trim(‘<string to be trimmed>’,’<direction to trim>’,<index>,<length of trim>). Left, left, Right, and right are all acceptable formats for <direction to trim>.
  • To return the three-digit area code from a 10 or 11-digit North American phone number (e.g., ‘312’), use GetUsCanAreaCode(‘<string>’)
  • To return the three-digit prefix from a 10 or 11-digit North American phone number (e.g., for 3125551234, the digits ‘555’ would be returned), use GetUsCanPrefix(‘<string>’)
  • To remove characters from a base string, use Remove(BaseString,StringToRemove)
  • To replace characters from a base string, use Replace(BaseString,StringToReplace,ReplacementString)
  • To perform a square root function, use sqrt(#)
  • To return last digits, use GetLastDigits(#) where # is the number of digits returned from the end of the string

Set Nodes

The following items are types of Set nodes:

Set Block Recording

This node allows or blocks all recording for a session. If Block Recording is selected, the node will override all configured recording settings and not record a session that routes through the node. If Allow Recording is selected, recording will be enabled, respecting other configured recording settings.

Set Config

This node sets the portal configuration setting for the Key specified to the Configured value.  The value can be checked using a Check Config node.

Set Extra Item

This node sets the session’s extra item for the key specified to the configured value. This can then be checked using a Check Extra Item node. The value can also be set to a combination of previously defined extra items by using the syntax {{ExtraItem1}}{{ExtraItem2}}.

This node can also set SYSTEM values using the key name format SYSTEM.{parameter}, which are persisted after a call is in queue. Available SYSTEM parameters include CallerPhoneNumber, CustomerIdentifier, OriginalToUri, and CustomerFullName. 

Set Priority

This node sets the numeric priority for the session and is used in call routing when determining which session to route to a newly available agent. The value is checked using the Check Priority node. The lowest priority and the default value is 0. The highest priority is 10.

Set Queue

This node sets the session’s queue by selecting it from the drop-down menu. It does not immediately place the session into queue, but it does set up logic for later in the flow that will be used when the session hits an enqueue node without an overridden queue. This node can also be used with a Check Queue node.

Run Custom Code

This node runs previously written custom nodes that have been compiled into libraries.

Set Agent Preference

This node allows a user to set either a list of preferred agents or a single required agent in the IVR for a session, which will offer the session to the preferred agent(s) if available.

Select either Preferred or Required. Additional fields appear depending on the selection. Enter the desired agent. The system will search for agents by either their first or last name, e-mail address, SIP address, telephone number, logon name, or Connect AgentId.

Set Language

This node allows the user to select a text-to-speech voice and speech recognition engine (that must be installed on all application servers) that will be persisted for the duration of the call flow.

Set Screen Pop URL

This node allows an IVR to set a specific URL for a website that will be loaded within the Agent Console as a screen pop. Setting a screen pop URL via this node supersedes any other configured screen pop in the platform, including one set via an Integration node.

User Interaction Nodes

The following items are types of User Interaction nodes:

Message

This node plays either a previously uploaded voice prompt or synthesized text to the caller. After the selected audio has played, the caller is moved to the next node.

When using synthesized text-to-speech, {{variableName}} will speak the contents of an extra item entry, and {{SYSTEM.systemVariableName}} will speak standard context items such as CustomerFullName, CallerPhoneNumber, CustomerIdentifier, and OriginalToUri. This node also supports multiple sequential prompts and text-to-speech.

Prompt

This node allows the system to request input from the user. It then routes the session based on that response.

When the node initiates, audio is played to the user using either a voice prompt or synthesized text according to the main prompt box. When the user presses a tone or speaks, that input is compared against the results mappings. If a match is found, the session is sent to the appropriate next node. If no input is identified from the user, the No Input prompt will play for the caller before the main prompt is re-played. 

If the user’s input cannot be matched to a mapping in the results list, the Bad Input prompt is played for the caller before the main prompt is re-played. The type of input accepted is configured by the DTMF and Voice check boxes.

If Can Interrupt is selected, the user will be able to provide input while the main prompt is still playing and will be routed away before the prompt completes. If Can Interrupt is not selected, the system will not listen for input from the caller until the main prompt has completed. The voice recognition and spoken language can be overwritten from their system default settings on a per-node basis. StopPromptAudioOnFirstInput controls whether or not a voice prompt or synthesized message is stopped as soon as any caller input is detected.

The caller’s response can be saved to the Call Context using the Save to Session Extra Item field, so it can be used later in the call flow. That value can either be an extra item key name (which can be any alpha string, like CustomFieldName), or a SYSTEM parameter using the key name format SYSTEM.{parameter}, which are persisted after a call is in queue. Available SYSTEM parameters include CallerPhoneNumber, CustomerIdentifier, OriginalToUri, and CustomerFullName. 

If using synthesized text-to-speech, {{variableName}} will speak the contents of an extra item entry, and {{SYSTEM.systemVariableName}} will speak standard context items such as CustomerFullName, CallerPhoneNumber, CustomerIdentifier, and OriginalToUri.

To allow the caller the ability to enter any number at a prompt (i.e., any four-digit number) via DTMF, use ? in place of each number in the results list (i.e. ???? or 12?4). To allow any number of numbers or characters, use * as a wildcard, and anything will be accepted in that position.

Be mindful when using short masks with wildcards, as * will match everything. This may prevent other options from being accepted.

If using the call flow for an IM attendant, a match will be identified if the mapped text is contained in the customer’s response; wildcards are respected as well.

Start Background Message

This node initiates the playback of a background voice prompt or synthesized text during a lengthy synchronous processes, such as obtaining data from the External Data Access node.

When using synthesized text-to-speech, {{variableName}} will speak the contents of an extra item entry, and {{SYSTEM.systemVariableName}} will speak standard context items such as CustomerFullName, CallerPhoneNumber, CustomerIdentifier, and OriginalToUri.

The Start Background Message node has an option to restart the process if it is not complete. This repeats the audio until the Stop Background Message node is activated. This feature is typically used in conjunction with the External Data Access node and the Stop Background Message node.

Stop Background Message

This node will stop any Background Message nodes previously started. There is an option to allow the message to complete before stopping, which will finish playing the prompt or synthesized text before proceeding.

Update Voice Prompt

This node will prompt the user to record a voice prompt that will then be configured in the Quick IVR as a node setting. Connect will run through a series of steps to record an updated prompt and allow verification and approval of the recording. The audio is then processed and loaded immediately as the updated voice prompt. The session will be sent to the next node on either a successful update or a cancel/failure path.

End State Nodes

The following items are End State nodes:

Enqueue

This node places the call into either the specified queue or in a queue previously set using a Set Queue node.

Hangup

This node ends the session.

Transfer

This node allows a session to transfer to an outside entity. The node can be configured to transfer to a phone number, a SIP address’s voicemail box, or a queue forwarding URI, which can use either a configured queue or the session’s previously set queue from a Set Queue node.

When using the Transfer node, phone numbers must be in the format tel:+1{number}. Environment exceptions exist, and because of this, some phone numbers must be in the format of a five-digit extension.
SIP address voicemail boxes must be in the format sip:{name}@{domain}.

Transfer to Call Flow

This node is used to transfer the session to another call flow. If a node other than the default is desired, the Transfer to Call Flow node also allows the user to send the session to an alternate node.

Route to Agent by Name

This node routes the session directly to the agent or user, similar to the functionality provided by the Unified Messaging attendant.

Integration Nodes

The following items are Integration nodes:

Dynamics Customer Lookup

This node queries the Microsoft Dynamics Online platform’s accounts and contacts to pull data into Clarity Connect, provide caller context via a screen pop or URL in the Agent Console window, and then push data back to the platform after the session has ended.

Because this node may take several minutes to run, it is recommended to place the node between a Background Message Start node and a Background Message Stop node so the caller does not hear silence during the process.

From the Lookup Type drop-down menu, select Automatic Detection to find a user in the platform based on the caller's incoming phone number, SIP address, or caller ID name. Select Extra Item Key to search for a user in the platform based on a previously defined extra item value.

If Extra Item Key is selected from the drop-down menu, two additional fields will appear. In the Extra Item Name field, enter the name of the extra item to use when querying the platform. In the Search Parameter field, enter the parameter the extra item will be searched against in the platform.

If Perform Fresh Lookup on Each Call? is not selected, Clarity Connect will attempt to find a record in the platform based on a previous search in a different session. If using this setting, you may specify the number of days to go back. If a record is found, that record will be used.

After the node runs, one of two paths are taken:

  • If a record is found, extra item values are set accordingly based on information retrieved from the returned record and the call is sent to the Next Node on Match.
  • If the platform did not return a record or if an error occurred, the call is sent to the Next Node on No Match. The call is also sent here if the platform integration has been disabled but the node is still present in a call flow.

Dynamics Advanced Lookup

This node allows the user to build a custom query to pull information from the Microsoft Dynamics Online platform. The query results can then be saved in a chosen location or as an extra item.

From the Primary Object drop-down menu, select an object to query. This is sent to the platform to determine which fields are part of the selected object. The results are populated into a list. These fields can then be added to the queried fields by clicking Add Field. If the field is a nested object with its own set of fields, click Get Extended Properties to redraw the list to include all fields in that nested object in the format Object_r.FieldName. A text box will appear next to each added field that allows you to specify the Clarity Connect extra item to store the retrieved result from once the query completes.

You must also configure a WHERE filter for the query. There are two ways to configure this. If you only need to filter against a single condition (i.e., Id == {{Value}}), you may use the GUI to generate the filter for you. Select a field available on the queried object from the WHERE drop-down menu, and then select a conditional operator (i.e., equal to, not equal to, etc.). Finally, enter a value for the filter in the text box. Extra items are supported. If you need to filter against multiple conditions, you may create a free-form WHERE clause. Enter the entire WHERE clause (not typing the WHERE keyboard itself) in the text box. Extra items are supported in the format {{ExtraItem}} if you would like to substitute values inside the query. Example: TelephoneNumber = '{{SYSTEM.CallerPhoneNumber}}' AND Ticket# = '{{TicketEnteredFromCustomer}}'.

Click Generate Value Boxes and enter any substitutions for each extra item value specified.

Click Validate Query to send the request to the platform to ensure the query is valid. A message will appear stating whether or not the query was successful and how many records will return.

After the node runs, one of three paths are taken:

  • If a single result is found, extra item values are set accordingly based on information retrieved from the returned result and the call is sent to the Next Node for Single Result Found. This path is also taken when How to handle Multiple Results Found is set to Take First Result.
  • If multiple results are found, extra items are set accordingly based on information retrieved from the returned results and the call is sent to the Next Node for Multiple Results Found. This path is also taken when How to handle Multiple Results Found is set to Take all Results (CSV). The Coalesce node may be useful here to split multiple results.
  • If the platform did not return a result or if an error occurred, the call is sent to the Next Node for No Results Found. The call is also sent here if the platform integration has been disabled but the node is still present in a call flow.

Salesforce Customer Lookup

This node queries the Salesforce platform’s accounts and contacts to pull data into Clarity Connect, provide caller context via a screen pop or URL in the Agent Console window, and then push data back to the platform after the session has ended.

Because this node may take several minutes to run, it is recommended to place the node between a Background Message Start node and a Background Message Stop node so the caller does not hear silence during the process.

From the Lookup Type drop-down menu, select Automatic Detection to find a user in the platform based on the caller's incoming phone number, SIP address, or caller ID name. Select Extra Item Key to search for a user in the platform based on a previously defined extra item value.

If Extra Item Key is selected from the drop-down menu, two additional fields will appear. In the Extra Item Name field, enter the name of the extra item to use when querying the platform. In the Search Parameter field, enter the parameter the extra item will be searched against in the platform.

If Perform Fresh Lookup on Each Call? is not selected, Clarity Connect will attempt to find a record in the platform based on a previous search in a different session. If using this setting, you may specify the number of days to go back. If a record is found, that record will be used.

After the node runs, one of two paths are taken:

  • If a record is found, extra item values are set accordingly based on information retrieved from the returned record and the call is sent to the Next Node on Match.
  • If the platform did not return a record or if an error occurred, the call is sent to the Next Node on No Match. The call is also sent here if the platform integration has been disabled but the node is still present in a call flow.

Salesforce Advanced Lookup

This node allows you to build a custom query to pull information from the Salesforce platform. The query results can then be saved in a chosen location or as an extra item.

From the Primary Salesforce Object drop-down menu, select an object to query. This is sent to Salesforce to determine which fields are part of the selected object. The results are populated into a list. These fields can then be added to the queried fields by clicking Add Field. If the field is a nested object with its own set of fields, click Get Extended Properties to redraw the list to include all fields in that nested object in the format Object__r.FieldName. A text box will appear next to each added field that allows you to specify the Clarity Connect extra item to store the retrieved result from once the query completes.

You must also configure a WHERE filter for the query. There are two ways to configure this.

If you only need to filter against a single condition (i.e., Id == {{Value}}), you may use the GUI to generate the filter for you. Select a field available on the queried object from the WHERE drop-down menu, and then select a conditional operator (i.e., equal to, not equal to, etc.). Finally, enter a value for the filter in the text box. Extra items are supported.

If you need to filter against multiple conditions, you may create a free-form WHERE clause. Enter the entire WHERE clause (not typing the WHERE keyword itself) in the text box. Extra items are supported in the format {{ExtraItem}} if you would like to substitute values inside the query. Example: TelephoneNumber = ‘{{SYSTEM.CallerPhoneNumber}}’ AND Ticket# = ‘{{TicketEnteredFromCustomer}}’. Note this uses the Salesforce Object Query Language (SOQL). Reference Salesforce documentation for more information.

Click Generate Value Boxes and enter any substitutions for each extra item value specified.

Click Validate Query to send the request to Salesforce to ensure the query is valid. A message will appear stating whether or not the query was successful and how many records were returned.

After the node runs, one of three paths are taken:

  • If a single result is found, extra item values are set accordingly based on information retrieved from the returned result and the call is sent to the Next Node for Single Result Found. This path is also taken when How to handle Multiple Results Found is set to Take First Result.
  • If multiple results are found, extra items are set accordingly based on information retrieved from the returned results and the call is sent to the Next Node for Multiple Results Found. This path is also taken when How to handle Multiple Results Found is set to Take all Results (CSV). The Coalesce node may be useful here to split multiple results.
  • If Salesforce did not return a result or if an error occurred, the call is sent to the Next Node for No Results Found. The call is also sent here if Salesforce integration has been disabled but the node is still present in a call flow.