Lab 2 - Let's Rock
Table of Contents
| Topic | Lab Type | Difficulty | Estimated length |
|---|---|---|---|
| Configuring tenant for Call Delivery | Practical Lab | EASY | 10 min |
| Adding a comfort message while a call is in queue | Practical Lab | EASY | 8 min |
| Creating alternating comfort messages while a call is in queue | Practical Lab | EASY | 15 min |
| Creating an opt-out option with ANI readout | Practical Lab | EASY | 15 min |
| Adding the ability to receive a callback at a different number | Practical Lab | EASY | 15 min |
| Adding the ability to collect an extension and present it to an agent during a callback | Practical Lab | EASY | 15 min |
Overview of the lab
In this lab, we will configure all the required elements to deliver a call into a queue.
We will then create a new flow and iterate on it, adding functionality and exploring opportunities for improvement.
First you will Route Calls based on Teams, later by Skills
Introduction
Live Demo by Günter
Lab Objective
- Configure Entry Point, Entry Point Mapping, Routing Strategy, and Queue
- Create a basic flow
- Add functionality to the flow by making small changes
Pre-requisites
- Complete Lab 1 — Admin Experience
- You have administrator's access to the Tenant Management Portal.
- Agent and Supervisor users created and configured.
- You have agent's access to the Agent Desktop.
- You have supervisor's access to the Tenant Management Portal.
- Agent is part of 2 Teams.
- Webex Calling extensions are assigned to WxCC users (agent and supervisor).
Quick Links
- Control Hub: https://admin.webex.com
- Portal: https://portal.wxcc-us1.cisco.com/
- Agent Desktop: https://desktop.wxcc-us1.cisco.com
Introduction to Flow Designer
Demo by Günter
Configuring tenant for Call Delivery
You can use this Audio Files during your Lab Experience
![[lab_wav.zip]]
Create a queue
- In the left pane of Control Hub > Select Contact Center > Queues
- Click Create Queue:
- Name your queue:
Q_AttendeeID - Description: optional
- Queue Type:
Inbound Queue - Channel Type:
Telephony - Queue Routing Type:
Longest Available Agent - Call Distribution:
- Click Create Group → Select
Your_Attendee_ID_Team1→ Save Group - Create second group → Select
Your_Attendee_ID_Team2→ After: 60 Seconds in queue, Priority: 2 → Save Group → Click Close
- Click Create Group → Select
- Service Level Threshold:
60 - Maximum Time in Queue:
600 - Default Music in Queue:
defaultmusic_on_hold.wav - Save
- Name your queue:
Create your first flow
-
Either Use the Flow Template or Create a Flow from Scratch.
![[flow_template 1.json]] -
In the left pane of Control Hub, click Flows.
-
Click Manage Flows.
-
Click Import Flows.
-
Click Choose file or drag the flow template into the upload box.
-
Click Import.
-
Click the name of the newly imported flow_template:
- Rename the flow to
AttendeeID_TechSummitby clicking on the pencil icon at the top. - Click on the Play Message node:
- Audio File:
welcome.wav
- Audio File:
- Click on the Queue Contact node:
- Select Static Queue
- Queue:
Q_AttendeeID
- Click on the Play Music node:
- Select Static Audio File
- Music File:
defaultmusic_on_hold.wav
- Click the Validation switch to turn on validation
- Click Publish Flow
- Add a Publish Note of your choosing
- Click Publish Flow
- Click Return to Flow
- Turn off Validation
- Rename the flow to
Create your Channel
- In the left pane of Control Hub, click Channels.
- Click Create Channel:
- Name your Channel:
EP_AttendeeID - Description: optional
- Channel Type:
telephony - Service Level Threshold:
60 - Routing Flow:
AttendeeID_TechSummit - Music on Hold:
defaultmusic_on_hold.wav - In Support Number section:
- Click Add
- In Webex Calling location, select "Office"
- In Available Numbers select Your Support Number
- Click the check mark
- Click Save
- Name your Channel:
Test your configuration
- Call your Support Number from your supervisor extension.
- You should hear the greeting message and then the music in queue.
- Go available in the agent desktop. The call should be delivered to your agent extension.
- End the call, Wrap-up, and Go unavailable.
Adding Functionality to Your Flow
Adding a comfort message while a call is in queue
- Delete the connection that loops from the end of the Play Music node back to its beginning.
- Drag a new Play Message node under the Play Music node.
- Click on the Play Message node:
- Activity Label:
comfortMessage - Audio File:
comfort_1_English
- Activity Label:
- Click on the Play Music node:
- Set the music duration to 15 seconds
- Connect the end of the Play Music node to the beginning of the Play Message node.
- Connect the end of the Play Message node to the beginning of the Play Music node.
- Validate and Publish the flow:
- Click the Validation switch to turn on validation
- Click Publish Flow → Add Publish Note → Publish Flow → Return to Flow → Turn off Validation
- Compare reference image
- Place a test call to your Support Number. Did you hear the comfort message every 15 seconds?
Creating alternating comfort messages while a call is in queue
-
Create a new flow variable:
- Click on the cog in the lower left corner of the canvas
- Click Add Flow Variables
- Name:
Loop_Count, Variable Type:Integer, Default value:0 - Click Save
-
Delete the connection from the Play Music node to the comfortMessage node.
-
Drag a Set Variable node onto the canvas and place it below the Play Music node.
-
Click on the Set Variable node:
- Activity Label:
lCount - Variable:
Loop_Count - Set Value:
{{ Loop_Count + 1 }}
- Activity Label:
-
Connect the Play Music node to lCount.
-
Drag a Condition node on the canvas.
-
Connect the end of the Set Variable node to the Condition node.
-
Click on the condition node:
- Activity Label:
evenOdd - Expression:
{{ Loop_Count is odd}}
- Activity Label:
-
Drag another Play Message node:
- Activity Label:
websiteMessage - Audio File:
website_English.wav
- Activity Label:
-
Connect the True node edge from evenOdd to comfortMessage.
-
Connect the False node edge from evenOdd to websiteMessage.
-
Connect the end of websiteMessage to Play Music.
-
Publish your flow (compare).
-
Place a test call. Did you hear the comfort message and website message alternate every 15 seconds?
Creating an opt-out option with ANI readout
-
Create new flow variables:
- Name:
callbackANI, Type: String, no default value - Name:
rDigit, Type: string, no default value - Name:
sPosition, Type: Integer, Default Value:0
- Name:
-
Delete the connection from websiteMessage to Play Music.
-
Drag a Menu node:
- Activity Label:
callback_opt - Audio File:
opt_out_English.wav - Make Prompt Interruptible: True
- Digit Number: 1, Link Description:
optOut - Connect the No-Input Timeout node edge to Play Music
- Connect the Unmatched Entry node edge to Play Music
- Activity Label:
-
Connect websiteMessage to callback_opt.
-
Add a Set Variable node:
- Activity Label:
callbackANI_set - Select Variable:
callbackANI - Set to Value:
{{NewPhoneContact.ANI | slice (NewPhoneContact.ANI.length -10,NewPhoneContact.ANI.length)}}
- Activity Label:
-
Connect the callback_opt optOut node edge to callbackANI_set.
-
Add a Play Message node:
- Activity Label:
cfrom - Audio File:
calling_from_English.wav
- Activity Label:
-
Connect callbackANI_set to cfrom.
-
Add a Set Variable node:
- Activity Label:
rDigit_set - Select Variable:
rDigit - Set to Value:
{{callbackANI | slice (sPosition,sPosition+1)}}
- Activity Label:
-
Connect cfrom to rDigit_set.
-
Add a Play Message node:
- Activity Label:
playDigit - Click Add Audio Prompt Variable
- Audio Prompt Variable:
{{rDigit}}_English.wav - Delete the Audio File Drop Down
- Activity Label:
-
Connect rDigit_set to playDigit.
-
Add a Set Variable node:
- Activity Label:
advance - Select Variable:
sPosition - Set to Value:
{{sPosition+1}}
- Activity Label:
-
Connect playDigit to advance.
-
Add a Condition node:
- Activity Label:
positionCheck - Condition:
{{sPosition <= (callbackANI.length -1) }} - True: Connect to rDigit_set
- False: Add a new Disconnect Contact node and connect here
- Activity Label:
-
Connect advance to positionCheck.
-
Publish your flow (compare).
-
Test: Call, press 1 for callback. Did you hear your 10-digit callback number being read back?
Adding the ability to receive a callback at a different number
-
Add a new Menu node:
- Activity Label:
confirmNumber - Prompt:
number_confirm_English.wav - Make Prompt Interruptible: True
- Digit 1: Link Description
confirm number - Digit 2: Link Description
change number - Connect No-Input Timeout & Unmatched Entry to the front of confirmNumber
- Activity Label:
-
Delete the False node edge from positionCheck to Disconnect Contact.
-
Connect the False node edge from positionCheck to confirmNumber.
-
Connect the confirm number edge to Disconnect Contact.
-
Add a Collect Digits node:
- Activity Label:
newNumber - Audio File:
new_number_English.wav - Make Prompt Interruptible: True
- Minimum Digits: 10, Maximum Digits: 10
- Connect No-Input Timeout & Unmatched Entry to the front of newNumber
- Activity Label:
-
Connect the change number edge to newNumber.
-
Add a Set Variable node:
- Activity Label:
newCB - Variable:
callbackANI - Set Value:
{{newNumber.DigitsEntered}}
- Activity Label:
-
Connect newNumber to newCB.
-
Add a Set Variable node:
- Activity Label:
resetPosition - Variable:
sPosition - Set Value:
0
- Activity Label:
-
Connect newCB to resetPosition.
-
Add a Play Message node:
- Activity Label:
rcontext - Audio File:
entered_English.wav
- Activity Label:
-
Connect resetPosition to rcontext.
-
Connect rcontext to rDigit_set.
-
Publish (compare).
-
Test: Press 1 for callback, press 2 to enter a different number. Did the new number get read back?
Adding the ability to collect an extension and present it to an agent during a callback
-
Create new flow variable:
- Name:
Extension, Type: String, no default value - Set as agent Viewable: True
- Desktop Label:
Extension
- Name:
-
Add a Menu node:
- Activity Label:
needExt - Audio File:
ext_English.wav - Make Prompt Interruptible: True
- Digit 1: Link Description
collect ext
- Activity Label:
-
Delete the connection from confirm number edge of confirmNumber to Disconnect Contact.
-
Connect the confirm number edge of confirmNumber to needExt.
-
Add a Collect Digits node:
- Activity Label:
getEXT - Audio File:
enter_ext_English - Make Prompt Interruptible: True
- Connect No-Input Timeout & Unmatched Entry to the front of getEXT
- Activity Label:
-
Connect the collect ext edge of needExt to getEXT.
-
Add a Set Variable node:
- Activity Label:
setExt - Variable:
Extension - Set Value:
{{getEXT.DigitsEntered}}
- Activity Label:
-
Connect getEXT to setEXT.
-
Add a Set Variable node:
- Activity Label:
clrsPos - Variable:
sPosition - Set Value:
0
- Activity Label:
-
Connect setEXT to clrsPos.
-
Add a Play Message node:
- Activity Label:
entEXT - Audio File:
entered_English.wav
- Activity Label:
-
Connect clrsPos to entEXT.
-
Use Shift + left-click to select these nodes:
- rDigit_set, playDigit, advance, positionCheck
-
Click the copy button in the lower-left corner of the canvas.
-
Drag the copied versions of the nodes under clrsPos.
-
Rename the copied nodes the original names +
_EXT(example:rDigit_set_EXT). -
Connect entEXT → rDigit_set_EXT → playDigit_EXT → advance_EXT → positionCheck_EXT.
-
Edit rDigit_set_EXT:
- Set value:
{{Extension | slice (sPosition,sPosition+1)}}
- Set value:
-
Edit positionCheck_EXT:
- Expression:
{{sPosition <= (Extension.length -1) }} - Connect True node edge to rDigit_set_EXT
- Expression:
-
Add a Menu node:
- Activity Label:
confirmEXT - Audio File:
ext_confirm_English.wav - Make Prompt Interruptible: True
- Digit 1: Link Description
confirmed - Digit 2: Link Description
again - Connect No-Input Timeout & Unmatched Entry to the front of confirmEXT
- Connect the Again edge to getEXT
- Activity Label:
-
Connect the False edge of positionCheck_EXT to confirmEXT.
-
Add a Callback node:
- Activity Label:
callback - Callback Dial Number:
callbackANI - Callback Queue:
Q_AttendeeID
- Activity Label:
-
Connect the confirmed edge of confirmEXT to callback.
-
Add a Play Message node:
- Activity Label:
callbackConfirm - Audio File:
callback_confirm_English.wav
- Activity Label:
-
Connect callback to callbackConfirm.
-
Connect callbackConfirm to Disconnect Contact.
-
Connect the No-Input Timeout and Unmatched Entry edges from needExt to Disconnect Contact.
-
Publish (compare).
-
Test:
- Press 1 to receive a callback
- Press 1 to keep the number that was read back
- Press 1 to receive a callback at an extension
- Enter your Supervisor Extension and press #
- In the agent desktop, go available
- When your agent phone rings, answer the call
- Listen to the prompts and enter the Extension shown on the agent desktop
- Your Supervisor extension should ring — answer it
Coming soon
- Making the flow bi-lingual
- Cisco TTS
- Adding HTTP Request
- Pubble Template
Congratulations, you have completed this lab! Continue with Lab 3 — Agent Desktop.