This post is going to cover a few disparate things as well as present a customer scenario we were trying to solve for. The post will focus on the specifics I struggled with in hopes it helps others. The highlights of what is covered in this post are:
- Displaying an attribute in the Agent Workspace with a view.
- Building a form view and passing data between two views.
- Getting your view data into a flow and updating contact attributes based on view form input.
- How to route queue transfers when working with proficiencies.
The use case: Customer has agents across the United States and calls are handled based on two things: caller’s time zone and the caller’s state. The caller chooses their time zone and state in the IVR and we then queue the call to the time zone that is chosen and set a proficiency of state based on the caller’s second selection. Proficiencies allow us to not have to create a queue for every permutation of time zone and state.
What happens if the caller chose the wrong state in the IVR? One solution is to ask the agent or the caller to go through the IVR again and choose the right destination, however experience wise this is just not ideal and there’s a lot of room for errors. Another possible solution is to create 50 queues, one per state and configure 50 quick connects. However, think about the impact this will have on your routing profiles. We’re not talking just 50 routing profiles as some agents could handle multiple states. We’re talking potentially as many routing profiles as you have agents. This is just not scalable and a management nightmare. One more option is to create a custom CCP. Now this is probably the most elegant solution, but also the one with the most amount of overhead and if your customer doesn’t already have a custom CCP it opens a whole new can of worms you will want to avoid.
I had a feeling that views would help here, but I had only done half of an AWS workshop about them in the past and felt like the presentation was too advanced and I was mostly lost. I also posted in LinkedIn in hopes I was missing something with how proficiencies worked and got some good ideas. Here’s how it was solved using views/step by step guides.
First let’s look at the queues:
Second, let’s look at the inbound flow that sets the queue. You get the time zone and set it a few attributes and use one of the attributes to set the working queue (shown above).
Third, let’s get the state and set the routing criteria where we’ll set State >= 1 for the type of agent we want the call to go to. You can see my State attribute, remember this as it’s important.
Now, let’s look at what an agent will look like to get a specific type of call. We need to set the state or states they are proficient in.
So far we’ve not done anything new. We’ve selected the queue and routing criteria we configured a routing profile (not shown) and set our agent proficiencies. This will get a call to the Pacific Time Zone queue for an agent that can handle California (CA) calls.
Views
The issue we have now is how do we let the agent transfer the call to another state (e.g. Oregon (OR)? First, let’s build a view to set the transfer destination.
This view has the pieces that are important.
- Attribute Bar: Will dynamically show the state that was selected in the IVR.
- Dropdown: Holds every possible state an agent could transfer to and has a name of StateDropdown.
- Button: Click action triggers the event flow to move forward and update attributes and sends the agent to a confirmation view.
The confirmation view:
This view has a single text box where the contents will be dynamically set.
Event Flow
We have to two views we need to allow the agent to specify where the call needs to be transferred to. Now we need to make a few updates. The first thing is to create a new flow which will serve as the event flow when the call arrives to the agent and will render the views in the agent’s workspace.
The event flow is pretty simple. Make sure you enable logging so you can see what’s going on in CloudWatch. Next you choose your Set Transfer view and in the input pass the JSON string below to set the attribute bar to show the IVR selected state. Remember, you want this attribute set on related contacts to make sure it’s available on the inbound contact. This is very important.
{“Attributes”:[{“Value”:”$.Attributes.State”}]}
After the agent sets the transfer destination we want to set a new contact attribute called AgentTransfer which will hold the new State. Next, we’ll show the confirmation view letting the agent know the transfer can happen now and we’ll show the agent what state they selected in the drop down. In the show view blow you’ll pass the JSON string below.
{“Attributes”:[{“Value”:”You call is ready to be transferred to $.Views.ViewResultData.StateDropdown.0″}]}
Now in the inbound flow we need to set an event flow to trigger the view workflow.
Now to test the inbound side. Below is my agent workspace receiving a call for Pacific Time Zone queue for State = CA.
My agent now wants to transfer the call to Oregon and uses the drop down.
Agent sees a confirmation that the call is ready to be transferred.
At that point the agent can use the appropriate quick connect to transfer the call.
One last piece, in the transfer flow we need to update the routing criteria to go to the new state. We can easily do that by checking that we have a value in AgentTransfer attribute.
And updating the routing criteria dynamically base on this same attribute.
Your call is now queued for an agent who handles OR calls.
I hope this was helpful, I spent a few hours trying to wrap my head around passing data to the view and getting data out of the view to update attributes. This was the biggest learning from all this and solved the use case without having to create a custom CCP or build any extra queues or routing profiles.
~david
You must be logged in to post a comment.