My First AWS Contact Centre – Part 2

My First AWS Contact Centre – Part 2

Published:

This content was last updated more than 2 years ago. Some information may no longer be current.

Last week I wrote about my introduction to Amazon Connect, this time I’ve been spending time within the Contact Flow Editor, this is the place where the Technical Support teams will spend a significant part of their lives, creating, amending or pruning IVR Flows. 10 years ago my full-time job was just that and I can assure you there is a right way to do this and many other different ways. Taken in isolation contact routing flows are simple, visual and logical (some systems being less visual than others) but when you scale they can quickly become unwieldy.

When designing contact flows you need to consider some basics like Opening Hours, queue treatment, priorities, real-time reporting, data collection, agent groups (& groups of groups & overflows & up-skilling routing), temporary closure, emergency evac, system issues, historical reporting, customer complaints etc.. etc… and we’ve not even started with the bigger topic of self service and CTI. I’ve been playing around with the 2 boxes below to see how they can currently be used (as of writing there are no help pages for usage so this is trial and error)

The names of the boxes give you a good understanding of what they are and how you can use them.

Set contact attributes has several options within it,

  • Save as Text (Key Value Pair)
  • Use Attribute
    • Types:
    • User Defined [Key Value Pair]
    • External [Destination Key <- Source Attribute] System [Customer Number | Dialed Number | Customer callback number | Stored customer input]

Based on what I see above, I suspect a DynamoDB is under the hood here (Does that mean in the future amazon will expose the DynamoDB endpoint to Connects’ Contact Flow Editor?, that would save on a Lambda Call?)

Save as text is nice an simple, you simply set a value and store that in a attribute (field), when you do this you can then query this attribute for the life of the contact and the data is also stored in your CTRs (Contact Trace Records) and it is sent to CCP (Contact Control Panel – the softphone). For the testing I did I used the below configuration:

CTRs looked like this:

CCP didn’t show the data on the screen to the agent… but the data is there for use in your own CRM.

150

And the audio played to me sounded like this:

This audio was downloaded using AWS Polly. Polly is the TTS Engine behind Connect and the great thing about that is that I did’t have to worry about the type of data being played, so £3.11 is spoken as three pounds and 11 pence! It sounds small but those who have had the pain of having to make different data types sound good in your IVR will greatly appreciate this. Polly uses natural language for lots of datatypes, dates etc.. and if you want you can use SSML (as we see later)

The other options for Set contact attributes I’ve not had as much fun with, or time with:

  • User Defined : This seems to the same as Text?
  • External : I suspect this is for future use as I tried to get it to save a Global Attribute but that failed, maybe it can pull in data from S3 / REST API etc… ??
  • System : I used this to Save my ANI as a different Attribute name.

Check contact attribute allows you to check and then route the contact based on a match or not. In the example contact flow that amazon provide they use this:

This is the very first node that is used within with contact flow, and its purpose is to prevent a double ‘Welcome’ message, if the attribute is true the main menu is played, if the attribute is false (Ie doesn’t exist) then the attribute is set in the next node and then the welcome message played. Imagine that you had much richer data about the person contacting you, where in the website they was, VIP status, under 25… all this rich data can then be queried and you can provide a tailored user experience / route the contact as required.

SSML

I’ve mentioned TTS and SSML and so I wanted to give you a simple example of how you can use SSML to give a better customer experience. Within the Play prompt node you get the options of:

  • Audio file
  • TTS
  • TTS with SSML
  • TTS Dynamic with SSML or not {Dynamic = Key value pair of External or User Defined}

Here is an example of the difference between TTS and TTS with SSML.

using TTS:

Option1: Your reminder pin is 1357. Thank you for calling my first aws contact centre… goodbye now!

Option2: Your reminder pin is 1 3 5 7. Thank you for calling my first aws contact centre… goodbye now!

using SSML:

1<speak>
2  Your reminder pin is 
3  <break time=”200ms”/> 1 
4  <break time=”200ms”/> 3 
5  <break time=”200ms”/> 5 
6  <break time=”200ms”/> 7. 
7  Thank you for calling my first aws contact centre… goodbye now!
8</speak>

That’s better!

Tidbits:

During my time tonight I found a few things that as you test and play with the system you should be aware of (I’m sure they will get ironed out soon) and some good things too.

– Saving a Contact flow would take up to a minute for the change to be reflected in production

– CTRs would take up to 2 minutes to show

– CTRs cannot be sorted by newest first

– Troubleshooting an issue is hard, I couldn’t get a call to my agent, CTRs wouldn’t help | CloudWatch logs don’t exist. I forgot I played with the open hours and I’m in a different timezone! (doh!, but good test of troubleshooting)

  • You can click on the end arrow in Contact Flow Editor and move it
  • Cloudwatch Metrics are promising!!

Thanks!