You are here: Advanced > Call Flow Nodes

Call Flow Nodes

Call flow nodes combine to make up a customized interactive voice response (IVR) engine, using logic and interaction to identify the appropriate queue a caller should be placed in. Nodes can check information, set variables, ask the user for input, integrate with third-party systems, and exit the call flow.

The QuickIVR Editor allows the user to create and configure their custom IVR (Figure 1).

Figure 1 QuickIVR Editor

The right side of QuickIVR 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 left pane.

Select a new node type in the bottom left and click Add to add the node to the call flow.

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.

The left side of the QuickIVR Editor allows the user to edit the properties of call flow nodes. Click Edit next to the node name to modify the node.

The Edit button at the top of the left pane (next to Publish) displays properties for the call flow itself (Figure 2), allowing 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 2 Edit call flow information

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.

Check Nodes

The following items are types of Check nodes:

Hover the pointer over the question mark icon in the call flow editor for tooltips on each node type.

Coalesce

This node allows a caller to parse through a CSV list of Extra Items to select which value to retrieve.

For any CSV Extra Items that contain the same number of items as the one being parsed through, place the Extra Items under Retrieve the values from the following CSV list of CSV Extra Items.

By default, this node will replace the CSV Extra Item with the single result. If you want to save the single result to a new Extra Item, check the Yes checkbox and enter the Extra Item, without {{ }}.

Figure 3 Coalesce node

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.

Figure 4 Check Config 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. 

Figure 5 Check Extra Item 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.

Figure 6 Check Priority node

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.

Figure 7 Check Queue node

Check Queue State

This node routes a call based on a queue’s current state. If a queue has been set using a Set Queue node, you can compare it against the assigned queue. Otherwise, you can 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.

Figure 8 Check Queue State node

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.

Figure 9 Check Time node

Check URI

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

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.

You can use a question mark (?) in any position of the mapped URIs to act as a wildcard
The mapping entry will still match even if the URI is a partial number.

Figure 10 Check URI node

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 or ODBC database, a Windows Communication Foundation (WCF) Web Service, or a HTTP Web Service.

If Database is selected, a dropdown menu to select the Connection Type will be present, SQL Server is selected by default. Additional fields will prompt for both a 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.

Figure 11 External Data Access node

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.

Figure 12 Check Modality node

Check User Presence

This node retrieves a user’s Skype for Business presence (available, logged off, or in another state). The result of the retrieved presence can be saved to an extra item.

This node is designed to query users that are not agents in the Clarity Connect. The Set Agent Preference node can be used for intelligent handling of Connect agents.

Figure 13 Check User Presence node

Do Math

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

Figure 14 Do Math node

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.

Figure 15 Set Block Recording node

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.

Figure 16 Set 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. 

Figure 17 Set Extra Item node

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.

Figure 18 Set Priority node

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.

Figure 19 Set Queue node

Run Custom Code

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

Figure 20 Run Custom Code node

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, login name, or Connect AgentId.

Figure 21 Set Agent Preference node

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.

Figure 22 Set Language node

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.

Figure 23 Set Screen Pop URL 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.

Figure 24 Message node

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.

Figure 25 Prompt node

Background Message Start

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.

Figure 26 Background Message Start node

Background Message Stop

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.

Figure 27 Background Message Stop node

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.

If an IM session hits this node, it will traverse the Cancel Node path.

Figure 28 Update Voice Prompt node

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.

Figure 29 Enqueue node

Hang Up

This node ends the session.

Figure 30 Hang Up node

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

Figure 31 Transfer node

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.

Figure 32 Transfer to Call Flow node

Route to Agent by Name

This node allows callers to speak the name of an agent or user (if Active Directory is enabled) that they wish to connect to, similar to the functionality provided by the Unified Messaging attendant. For calls routed to Connect agents, these transfers are treated as direct inbound calls and preserve the Connect Agent Console experience.

Figure 33 Route to Agent by Name node

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.

Figure 34 Dynamics Customer Lookup node

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.

Figure 35 Dynamics Advanced Lookup node

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.

Figure 36 Salesforce Customer Lookup node

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.

Figure 37 Salesforce Advanced Lookup node