Step 5: Design an Interactive Flow

A flow represents the business logic of a call. It is a series of call actions and parameters that describe the caller and resource/agent experiences during an interaction and "tells" the application how to handle the entire interaction. For example, the flow dictates what IVR messages to play to callers (media prompts), which queue to place them in (created queues), and which agents the work offer may be sent to, based on their assigned groups and/or skills. It also tells the application how to handle functions like placing someone on hold or disconnecting the call.

Flows are designed using various objects in a graphical flow designer where you drag and drop elements, link, and configure them to create a flow.

Flow Object Description
Activity

An action taken by the system during a call or to complete a function.

Example: Playing a media file or dialing a resource.

 

Event

Starting and end points of a flow as well as any intermediate events that trigger movement throughout a flow progression.

Example: Start, End, or throwing a signal that work was accepted.

Branch

Controls the sequence of a flow by branching off into different paths and acting as decision points.

Example: Different paths to different queues, based on IVR selections.

Reusable Flow

Holds series of activities and events that include multiple pieces of standard business logic combined into one activity selection. You can create a reusable flow that is then an available object in your future customer flow designs.

Example: You may have a series of individual media prompts that you want to play to a caller. Rather than configuring each Play Media object in your call flow, you can create a reusable flow with them and insert that as one object into your call flow.

The Flow Designer allows you to tell the console exactly how to handle and manage the interaction, based on the objects that you add and how you configure them. While you are free to design any number of possible flows in the Flow Designer, this activity will walk you through a basic flow creation that will route a caller through different prompts, provide two queue options and offer a satisfaction survey.

Create a Flow

Go to Flow > Flows to get to the Flow Management window. Existing flows will be listed.

  1. Click on Create in the upper right corner to open the New Flow window
  2. Enter a Name for your flow
    This is a free form entry field. Use any Flow Name that doesn't already exist, such as Main IVR, ABC Inc Main Flow, John's Flow
  3. Select the flow Type of Customer
  4. Click Submit

Add Flow Objects

The steps below only include the objects required for this activity. For a list of the current flow objects and their explanation, refer to the Flow Object Reference appendix included at the end of this guide.

  If any object is missing a required configuration item, that object will be highlighted in red. those objects must be resolved prior to the flow being saved or published.

We will design a flow that includes the customer, agent, and standalone functions. Each will require their own piece of the same flow.

Create the Agent Portion of a Flow

Step Details Object
1.

Add an Entry event.

This event indicates the beginning of the flow.

2.

To the right of the Entry event, add a Play Media activity.

This activity will play a welcome message to the customer calling.

  • Loop: Leave disabled (gray)
  • Media: Welcome (This is a TTS media that welcomes the caller)
  • Participant: Customer

Connect the items

  1. Click in the Entry event to trigger a small chevron icon to the side of it.
  2. Click on the chevron icon to create a connection line and drag it to the Play Media activity
  3. Drop the line anywhere on the activity to have the items connect
    Be sure to drop the line somewhere inside of the object to ensure that they're connected

Connection lines can be removed at any time clicking on the "x" that appears on it. They can also be moved, extended, or bent at given angles.

3.

To the right of the Play Media activity, add a Collect Digits activity.
This activity will present the customer with an option and ask them to make a selection by pressing a designated number on their telephone keypad.

  • Participant: Customer
  • Media: Main Menu (This is a TTS prompt that asks the caller to press 1 for Sales, or 2 for Support)
  • Number of digits to collect: 1
  • Timeout: Leave the default value of 10 seconds
  • End on: Leave the default value of the pound symbol (#)
  • Digits: menu (This is a binding variable that we will use to make decisions based on the digit entered)

Connect the Play Media activity to the Collect Digits activity.

4.

To the right of the Collect Digits activity, add a Decision Branch.

This allows you to branch the flow into different paths, based on conditions that you set on the outgoing branches of the object.

These are based off of the options that were presented to the caller in Step 3. In our example, we presented the caller with two options, so this object will require two branches to accommodate those. We can also be prepared for invalid entries and add a third branch that routes back to the Main Menu. Otherwise, if we only prepared for a selection of "1" or "2" and the caller pressed "4" in error, nothing would happen and the caller would be stuck.

Connect the Collect Digits activity to the decision branch.

CHECKPOINT: Your flow should now look similar to this example.

5.

Coming off of the upper right side of the decision branch, we will create the Support path from the decision point created and add another Collect Digits activity.

This activity will ask the caller to enter their customer number to identify themselves.

  • Participant: Customer
  • Media: Collect Customer Number (This is a TTS prompt that asks the caller to enter their 3 digit customer number)
  • Number of digits to collect: 3
  • Timeout: Leave the default value of 10 seconds.
  • End on: Leave the default value of the pound symbol (#)
  • Digits: customerNumber

Connect the Decision Branch to the Collect Digits activity.

Important: Because this connection is from a Decision Branch, we have to configure the connection to tell the flow when to use it. Click once on the connection line to bring up the details if necessary. You can also access connection configurations by clicking on the gear icon that appears when hovering your mouse over them.

  • Label: 1 for Support
  • Type: Conditional
  • Condition: (= menu "1")

This tells the flow that this path is only to be used when the digit "1" is entered in step 3.

6.

Next to the Collect Digits activity, add the Queue with Media template and connect the items.

This template places the interaction into the specified queue which triggers the process of finding an available resource based on the queue search query, while simultaneously playing back specified hold music to the customer.

  • Queue: Support
  • Media: Hold Music
  • Callback Enabled: Leave disabled
  • Callback Wait Time (in seconds): Unnecessary, leave the default value
  • Callback Offer Media: Unnecessary, leave the default value
  • Callback Queue: Unnecessary, leave the default value
  • Confirm Number Media: Unnecessary, leave the default value
  • Change Number Media: Unnecessary, leave the default value
  • Callback Exit Media: Unnecessary, leave the default value
  • Callback Invalid Number Media: Unnecessary, leave the default value
  • Agent Callback Message: Unnecessary, leave the default value
  • AgentCallbackMedia: Unnecessary, leave the default value
  • Resource: agent
Image of Queue with Media flow notation
7.

Steps 5 and 6 created the path for the Support queue for an existing customer. Now, let's create a separate path for a new customer looking for Sales, which was option 2 on the IVR Main Menu step.

Coming off of the lower right side of the branch from step 4, add another Queue with Media template.

  • Queue: Sales
  • Media: Hold Music
  • Callback Enabled: Leave disabled
  • Callback Wait Time (in seconds): Unnecessary, leave the default value
  • Callback Offer Media: Unnecessary, leave the default value
  • Callback Queue: Unnecessary, leave the default value
  • Confirm Number Media: Unnecessary, leave the default value
  • Change Number Media: Unnecessary, leave the default value
  • Callback Exit Media: Unnecessary, leave the default value
  • Callback Invalid Number Media: Unnecessary, leave the default value
  • Agent Callback Message: Unnecessary, leave the default value
  • AgentCallbackMedia: Unnecessary, leave the default value
  • Resource: agent

Connect the Decision Branch to this Queue with Media object.

Important: Because this connection is from a Decision Branch, we have to configure the connection to tell the flow when to use it. Click once on the connection line to bring up it's details if necessary. You can also access connection configurations by clicking on the gear icon that appears when hovering your mouse over them.

  • Label: 2 for Sales
  • Type: Conditional
  • Condition: (= menu "2")

This tells the flow that this path is only to be used when the digit "2" is entered in step 3.

Image of the Queue with Media flow notation
8.

Steps 5 and 7 configured flow paths for the possible customer selections - now we'll create a path for an invalid entry that will allow the caller to try again.

Below the Decision Branch, add a Play Media activity.

  • Loop: Leave disabled
  • Media: I'm sorry, that was an invalid response
  • Participant: Customer

Connect the Decision Branch and this Play Media activity.

Important: Because this connection is from a Decision Branch, the connection has to be configured to tell the flow when to use it. Click once on the connection line to bring up its details if necessary. You can also access connection configurations by clicking on the gear icon that appears when hovering your mouse over them.

  • Label: Default
  • Type: Default
  • Condition: (leave blank)

This tells the flow that this path is the default path to follow if the other conditional paths (options 1 or 2) do not apply.

Next, to give the caller another chance to make their selection, create another connection from this Play Media activity to the Collect Digits activity, directly before the Decision Branch.

CHECKPOINT: Your flow should now look similar to this example.

Screen  image of a flow checkpoint

9.

Now that you have resources available from the Queue actions for both the Support and the Sales options, each will need to have the customer connected to the applicable resource. Since each require the same action, we can combine the paths and use the same activity.

Next to the Queue actions, add the Conference Customer In object.

  • Record: Click to enable audio recording of the calls handled

This action adds the customer into a conference with the resource.

Connect both of the Queue Interactions to the Conference Customer In object.

Image of the Conference Customer In flow notation
10.

To ask the caller to rate their satisfaction level at the end of the call by using the dial pad, add a Customer Satisfaction Score activity next to the Conference Customer In object and connect the items.

  • Invalid Input Media: I'm sorry, that was an invalid response
  • Max Score: 5 (This will provide the caller with a rating scale of 1 to 5)
  • Media: Collect Satisfaction Score (This is a TTS prompt that asks the caller to rate their satisfaction between 1 and 5)
  • CSAT Score: csat (This is a binding variable that can be used to attach the response data to another object or use in reporting)
Image of the Customer Satisfaction Score flow notation
11.

Below the Customer Satisfaction Score activity, add a Play Media activity to thank the caller and say good bye.

  • Loop: Leave disabled
  • Media: Thank you. Have a great day.
  • Participant: Customer

Connect the Customer Satisfaction Score activity to this Play Media activity.

12.

Below the Play Media activity, add a Disconnect activity and connect the items.

  • Participant: Customer

This will disconnect the customer from the call.

13. Below the Disconnect activity, add the Exit event and connect the items.

CHECKPOINT: This completes the customer portion of the flow which should now look similar to this example.

Screen image of a customer portion of a basic flow

 

Create the Agent Portion of a Flow

The previous section created a caller experience. This section will create the agent experience.

Step Details Object
1.

In an empty section of the Flow Designer, add a Resource Entry event.

  • Signal Name: resource-acquired
  • Condition: (leave blank)
  • Resource: agent (This needs to match the binding variable that is used for the Queue with Media actions from Steps 6 and 7 when creating the customer experience portion of the flow)

This event identifies a sub flow that will not be triggered until the resource-acrquired signal is ready. That signal is sent from the Queue actions in the customer experience portion of the flow.

2.

Next to the Resource Entry event, add a Work Offer Flow reusable flow. This object sends the work offer (call) to the agent.

  • Resource: agent (This needs to match the binding variable that is used for the Queue with Media actions from Steps 6 and 7 when creating the customer experience portion of the flow)
  • Timeout: 30 seconds
  • Disposition Codes: Select the Disposition List that you created in Creating a Disposition List
  • Force Disposition Select: If Auto Wrap Up is enabled (below), click to enable to force agents to select a disposition code before they can end their wrap up
  • Auto Answer: Click to enable to have WebRTC calls automatically accepted by the agent
  • Target Wrap Up Time (seconds): 30
  • Auto Wrap Up: Click to enable to have agents automatically placed in wrap up at the end of an interaction
  • Allow Wrap Up Update: Click to allow agents to manually turn automatic wrap up on or off
  • Wrap Up Time (seconds): 120
  • Auto Screen-pop: Disable

Connect the Resource Entry event to Work Offer Flow.

Image of the Work Offer Flow notation
3.

Next to Work Offer Flow, add a Conference Resource template and connect the items.

  • Muted: Leave disabled
  • Participant: agent (Once you connect Work Offer Flow to Conference Resource, the Participant list will populate with the binding variable entered previously in your flow. If you do not see 'agent', confirm that the objects are connected.)

This Participant will always match the resource value specified by the Resource Entry event.

4.

Next to the Conference Resource In object, add a Disconnect activity and connect the items.

  • Participant: agent (Once you connect Conference Resource to Disconnect, the Participant list will populate with the binding variable entered previously in your flow. If you do not see 'agent', confirm that the objects are connected.)

This Participant should always match the resource value specified by the Resource Entry event.

5.

Next to the Disconnect activity, add a Free Resource activity and connect the items.

  • Participant: agent (Once you connect Conference Resource to Disconnect, the Participant list will populate with the binding variable entered previously in your flow. If you do not see 'agent', confirm that the objects are connected.)
    This Participant should always match the resource value specified by the Resource Entry event
  • Set Presence: Ready
  • Reason: N/A

This activity lets the flow know that when the agent is disconnected from the call that they should be removed from the interaction and placed in a Ready status.

6. Next to the Free Resource activity, add the Exit event and connect the items.

CHECKPOINT: Your flow should look similar to this example.

 

Screen image of a completed basic flow design

 

Configure the Flow Defaults

There are some basic functions of a standard interaction flow that are not necessarily specific to the customer or agent portions of the flow. These functions are configured through mandatory flow settings.

Step Details Object
1.

Access the flow settings by clicking the gear icon next to the Publish button.

Image of the Flow Settings gear icon
2.

Go to the Flow Defaults tab.

3.

Configure your flow defaults. We will only configure the settings that are necessary for this flow. The remaining default values can be left as they are.

  • Hold Media: Hold Music
  • Transfer Timeout: Unnecessary, leave the default value
  • Transfer Dispositions: Select your disposition list
  • Transfer Auto Wrap-up: Click to enable
  • Transfer Wrap-up Update Allowed: Click to enable
  • Transfer Target Wrap-up Time: 30
  • Transfer Maximum Wrap-up Time: 120
  • Transfer Auto Answer: Click to enable
  • Transfer Force Disposition Select: Click to enable
  • Conference 3rd Party Recorder: Unnecessary, leave the default value
  • Mute Recorder: Unnecessary, leave the default value
  • Recorder Endpoint: Unnecessary, leave the default value
  • Dial From: Unnecessary, leave the default value
  • Custom SIP Headers: Unnecessary, leave the default value
  • Recording Update Allowed: Unnecessary, leave disabled
4. Exit the flow settings by clicking anywhere outside of the settings window.

End Result

This completes your flow design! You may have noticed that your flow automatically saved after each change. You can close your flow designer at any point and return to that draft version to continue from where you left off, but your flow isn't active until you publish it. Feel free to move items before you publish your flow by dragging them on the canvas.

  Don't worry if your sections are in different locations within the Flow Designer or go in different directions like down instead of to the side. The important part is that the objects are connected in the proper sequence with the correct configuration details.

Next Section: 

Step 6: Publish Your Flow


You might also be interested in: