Amazon Connect Deep Call Back Option! – a lesson in Contact Attributes

The Call Back Dilemma !

It is now common place to hear an option while you are on hold in a call center that suggests “If you would like to arrange a call back when an agent is available, press 1 or continue to hold for the next available agent”.    The caller can then enter a phone number, hand up and when an agent becomes available, the system first connects the agent and the places and outbound call to the phone number that requested the call back.  This all works well except when the number entered is the main switch board number at the company that the caller works in.  The receptionist answers the inbound call and says “how can I route your call” and the agent has no clue who in the company requested the call back.

Here is one Solution!

During the call back process, in our contact flows, we ask the caller to enter the number they want us to call them back at.   We read back the number to them and offer them an opportunity to re-enter the phone number if it was incorrectly entered.  We then follow with a prompt that says “if the number you entered was the main number of the company you work for, please enter the phone number of the extension we should ask for when we return your call.  if there is no extension number please press #”.   We store the extension number as a contact attribute which is saved with the contract trace record.  You can even select contact search in the real time metrics of your Amazon Connect dashboard and verify that this attribute is in fact saved with the the contact ID record.

Default Outbound Contact Flow

There is a default outbound contact flow in all Amazon Connect instances and you can modify and “save as”  or use it as you desire.  The trick is to create an outbound prompt that plays  a prompt that says “This is a return call from DrVoIP office as requested by someone in your company.  That person is located at <extensionNumber> so please transfer this call to that extension as an agent will now join the conference”.  In this way the receptionist is alerted to how the call should be routed and we have no accomplished what we call “deep call back”.

 

 

In this example we check the contact attributes to see if <extension number> starts with # which would indicate there is no extension number. For this reason we want to play a different prompt “this is the call back you request from DrVoIP technical support”.

Options to Improve the experience for the Agent

There is a default Agent Whisper Contact flow that is regularly used in an Amazon Connect call center to let the agent know what Queue Name the caller hit!  Agents who are part of multiple queues find this very helpful.  This contact flow can be modified to play the contact attribute <extension number> when an outbound call is connected.    Optionally, you can present the <extension number> in the agent desktop as a text field.

 

The configuration of contact attributes in the  Amazon Connect solution is a very powerful tool and can be used to solve a lot of customized challenges!  Give us a call if we can help you set this up! – DrVoIP@DrVoIP.com

 

 

 

 

 

 

Amazon Connect – Is today a Holiday?

Is Today A Holiday?

Having deployed hundreds of CISCO UCCX and ShoreTel ECC and other Contact Centers, checking to see if today is a holiday seemed to be the “minimum daily adult requirement” for contact center management.  In fact one of the most popular scripts on the net for CISCO UCCX was named “HolidayCheck”!    In fact we used this script to provide an XML tutorial  on the DrVoIP YouTube channel.  Checking a list of holidays to deal with periodic contact center closings is usually a standard feature in most call center applications and telephone systems.

Amazon Connect, however, does not provide a “holiday check” out of the box!   If you want one, like many other features in Amazon Connect you are going to have to create it by writing your own function.  The good news is that the wealth of services in AWS makes this a very simple task using nothing more than a Lambda function!

Contact Flow – Invoke Lambda

An Amazon Connect contact flow would do the normal “check hours” to figure out if the caller was hitting the system during “on hours” or “off hours”.  If the call arrived during normal business hours, then the next step would be to check and see if today was a holiday.    The contact flow adds a simple “invokeLambda” function to make this determination. To simplify the lambda function, we include the list of holiday’s as an object array within the environmental variables.

We determined to create a simple lambda holiday check function using the fewest lines of Node.js code as possible!  In fact there is no need to invoke the function by passing in a date.  You simply invoke lambda and it uses the javascript date() function to parse through your list of holidays comparing todays date with the individual list items.   What we want returned is a simple “true” if today is in fact a “holiday”; or a “false” if today is not a holiday!  Very simple!   The branch step in your contact flow will be based on this simple boolean value returned from lambda.

Improving the function

Now that we know if “today is a holiday” we have the basics in place.   Improving the function has endless possibilities.  For example:

The basic function assumes a full day closure.  What about half days.

It would also be desirable to have an ability to play a custom audio prompt based on the specific holiday closure.

Clearly you can make the administrative interface much more acceptable to a call center supervisor while eliminating the need to let non-development professionals access the AWS Console.  In the basic function, updating the holiday schedule would require folks be able to access the lambda functions directly to update the environmental variables.    Creating an S3 bucket as a static website host, with a simple HTML interface to enable system administrators to update the holiday list from year to year would be an obvious improvement.   This option would open the door to allowing supervisors to close a queue for a team meeting.

Summary

Amazon Connect is an element of a very large ecosystem in which the available services enable you to create a contact center that can meet your wildest imagination!   If you can “see it”  you can make it happen!  Optionally, you can call on DrVoIP and we will make it happen for you!

The Lambda Function is available here.

The function is written in Node.js and is built out using the Serverless framework which you will need to make use of, to deploy the function in your own Amazon Portal:

First you have to configure an AWS CLI profile in order to deploy here is steps to configure it:
step 1: Open terminal
step 2: Execute command “aws configure –profile <profileName>” it will ask for input key id, access key, and region
Next here is steps to deploy service:
step 1: Open terminal
step 2: Get to project root directory
step 3: Execute command “serverless deploy –aws-profile <profileName>”

 

 

 

 

Amazon Connect Tips, Tricks and Trouble Shooting!

What no Delete for Contact Flows?

One of the first discoveries you will make while configuring contact flows is that you can NOT delete a contact flow.   Once it is created, you can “save as” but you cannot delete it.  There is a good reason for this and hopefully by the end of this blog it will make sense to you.   Out of the Box, Amazon Connect comes pre-configured with a wide variety of contact flows and system parameters.  You will see this listed as sample and default in a newly created instance.  If you poke around you will also see that a schedule of basic hours has been configured along with a basic queue.  There are preconfigured security profiles and preconfigured routing profiles along with a small library of professionally recorded voice and music  prompts.


This pre-configuration and population of basic and default parameters is done for a reason that also helps explain why you cannot delete anything after you create it!   Assume you open a new Amazon Connect instance and following the setup menu, add a telephone number.  Assign that number in the drop down window in the phone number configuration to point to the “Sample inbound flow (first call experience”.   Then call the number.  This Call flow will make use of most if not all of the default and sample contact flow listed in a fresh out of the box, unmodified Contact instance.  Since we did not configure an agent or queue it draws on several preconfigured parameters including the “Default Customer Queue” which describes what a caller hears while waiting for an Agent to become available and the “Basic Queue” along with the “Basic Hours”.

How Amazon Connect stages Default Contact Flows

If you open the “Sample inbound flow (first customer experience)”  note that it does NOT make use the “Default customer queue” step.  How is that we hear it if it is not in the contact flow?  When the call is transferred to an Agent we did not even configure yet (we are logged in as the Instance Administrator on a CCP softphone), we even hear the “Default agent whisper”.   Nor did we configure a Queue?  Likewise if we put the caller on hold we are tapping the “Default customer hold” contact flow.  If we are in Call Wrap up, the caller would be hearing the “Default customer queue” contact flow while awaiting for an agent to become available.

This is the key reason you can not delete anything!  To do so would jeopardize the stability of the Connect Instance.  These defaults assure that configuration newbies cannot stray materially from the experience they intended to configure.   While the Connect instance is setting up an outbound connection to the agent CCP softphone, and even longer if dialing an agent’s hard phone.   The caller will hear the “Default customer queue” experience.  We recommend that you get a “ring back” audio prompt and use that in either the default customer queue or the customer queue you create.  We think it is a bit confusing for a caller to call in and hear music while being transferred.  You should also note the possible impact on your inbound call statistics.   Additionally, note that billing started the moment your caller hit the phone number regardless of the fact that they are not yet connected to an agent.

Creating and Modifying Contact Flows using “Save As”

Each of the Contact flows in an Amazon Connect instance has an Amazon Resource Number or ARN. This is a globally unique identification number and defines every contact flow in the instance.  Generally, you will build a new contact flow from an existing one.  To do this, you first open the contact flow you want to copy and do a save as.    You have to pay attention here, or you will have a big problem!   Some folks open a contact flow,  change the name and make some modifications and then publish it!  It will show up in your list of contact flows, but it will still have the ARN of the original contact flow even though you renamed it!   This means that other contact flows that call on that original contact flow will now get all your changes!   What you want to do is rename the contact flow and do a “save as” in this way you create a new ARN and will not be over writing the original contact flow.

 

Not all Contact flows have all contact flow Options?

There are about 9 different types of contact flows that you can create to meet your call flow requirements.  If you create a new Contact Flow you need to understand that not all contact flow types will have all the contact flow options.  For example if you are describing the experience you want a customer to have while in queue waiting for an agent to become available, you will  open the “Default Customer Queue ” and do a “save as” to create your experience.   Do not expect to find a “Transfer to Flow” option in the list of possible steps as that option is not available in this type of contact flow.  The list of step options changes based on the type of contact flow you are creating, so keep this in mind!

 

Error Handling

Generally, every step in a Contact Flow has an error exit.   We have found that it is best to create a Contact Flow named “error handling” and to use this as the solution to all of the options that you must provide an error exit.

 

Use Speech Markup Language for Text to Speech prompts!

As a consultant deploying call center and IVR solutions, one of the most frustrating aspects of the implementation is waiting for clients to get their voice prompts together!   Generally we will not start an implementation until we have the prompts!  Text to Speech is a life saver for deployment engineers.  You can create prompts on the fly and let people test them, suggest modifications and really fine tune the prompts to achieve the desired level of customer care.   When the prompts are all agreed to, you can then get them professionally voiced or not!  We find that Amazon Polly is an excellent option for prompts but we also suggest that you use the Speech Synthesis Markup Language option.  In all of the prompt areas you can choose between loading a Wave file, or using Text to Speech. When using Text to Speech you have the option of interpreting the text as text or as SSML.     SSML enables you to add tags that can control the various components of speech including tone, pitch, speed and format.   You may want a number read as a phone number for example, rather than a long integer.   SSML is simple to configure and it very powerful.  Learn to use it always and you will have very excellent results.

Don’t forget to assign outbound phone numbers to your Queues

In Queues in which Agents are expected to make out bound calls you must associate a phone number to that queue for outbound dialing.  The Agent will not be allowed to make outbound calls if they do not have a phone number assigned to the queue.  You can also try to put an outbound name in the same configuration area, but there is no guarantee that this name will be displayed to the CallED party.  The phone number will most likely display to the CallED party, however names are provided by multiple options at both the carrier level and the end device level.

Trouble Shooting 101

When trouble shooting Amazon Connect contact flows your best friend is CloudWatch and Contact Flow Filters!   Lets take a look at each of these tools to better understand how they work together to provide a history of how a specific call behaves.    First while in the Connect dashboard you will find under “Metrics and Quality” you will find a  TAB for “Contact Search” .  Selecting this option will enable you to set search filters for the contact record you are trouble shooting.  You can filter on the usual date and time parameters, but also by queue, and by call type and direction (Inbound, Outbound, Transfer, API, Call Back and Queue Transfer).   The goal is to obtain the “ContactId” the key to all activity in the Connect Instance.  If you know this ContactId you can just search for it and skip the filters.  Optionally you can just “Search” and you will see a list of ContactId’ based on the default filter.

Now that you have the Contact ID you can move over to CloudWatch (this assumes you have enabled logging) and you can search for this ContactId record and follow the entire call flow from start to finish,  Go to the CloudWatch service, click on Logs and then locate the “Log group” for your Amazon Connect Instance.  This will pop a list of “Log streams” and “last event time”.  Find a row that closely matches the date and time of your target ContactID and open that log stream by clicking on it.

Note that the time in the even stream is in UTC and matching log times is always interesting.  In this example we searched for a particular Contact ID in the Connect dashboard and it shows that the call we are interested in had a “Initiation TimeStamp” of *7:46 PM”  GMT/UTC  or Zulu  time (if you are military, which all mean the same time reference regardless of where you are located on the globe).

 

The Contact ID is a clickable link, and will bring up some information of interest as contained in the Contact Trace Record.  There will be a Contact Summary, A recording if enabled with the location of the recording and a playback button, Connection Endpoint pairing and Queue information.

Heading over to CloudWatch and checking the respective Log Stream in the instance log group, we find that the time is being adjusted to the GMT offset of the time zone the Instance time reference, which in our case is GMT -7 hours!  S o the Contact Filter Search in the Amazon Connect dashboard is being Time Stamped for GMT/UTC but the log is offset (Terminate at 7:46 PM in dashboard is listed at 12:48 in the CloudWatch logs).   Keeping track of this time offset will drive you a bit nuts, but if you are aware of it, you can figure it out.  SUMMARY – Look in Cloudwatch for the UTC offset in your Connect Instance and NOT the time stamped in the Contact Filter of your Amazon Connect dashboard!

 

 

When searching for records in the CloudWatch logs you will note that you can set it for ROWS or TEXT and you can also select to search by specific times and choose between UTC time or Local Time zone>

When you set your search by ROW you will get an orderly list of multiple Contact ID’s within the event range reported.  Logs are posted about every minute or so.  In an instance with a heavy call flow you are going to find many different Contact ID’s in that event range and will have to search for a specific record using a search filter in the format of “ContactId” = “ca822db4-98aa-4de3-9254-461177a6d259”.   In Text mode you can also search using the CTRL F feature of your browser.

When you use the ROW mode you will get a list of Contact Flow steps that, by pushing the down arrow will open each step for inspection.  This is necessary to see each step of your call flow, what Contact FlowId  was used by ARN.

Selecting the TEXT mode will generate the same list of JSON objects but they will be fully expanded:

CCP Trouble Shooting

There is a very useful tool for testing the connectivity of a specific desktop call control (CCP) to your Amazon Connect instance.  It provides useful information about the latency, resource, reachability and connectivity that are essential base lines for trouble shooting.   Click here!

CCP LOGS

On the CCP you will find the little GEAR symbol and if you click on that you will be able to download the logs for this Agent Desktop.

 

You can open the logs with any text editor and the content often spells out the issue pronto quick!

 

(to be continued)

 

Enhance your ShoreTel ECC with Speech Recognition & Chat Bots!

Press 1 for English!

Two characteristics of telecom technology in the 21st century continue to not make sense to us.  Why are we still using fax?  How come we still “Press 1 for this and Press 2 for that”?   I mean really, it is the 21st century after all.   Let’s put fax aside for the moment and focus on the continued use of DTMF key presses in interactive voice response solutions like automated attendants and embedded applications, like bank account balance enquiries.   You would think in this age of AI and Chatbots, you would no longer need to “Press 1 for English”.   The application should be “smart” enough to to know what language you speaking!

 

ShoreTel ECC

The Shoretel ECC was originally designed and built by a team of engineers led by Avi Silber, former VP of Engineering for Tadiran, who left to form Easy Run a new brand of call center.   Easy Run would ultimately enter into OEM deals with 3COM (remember the NBX?) and later ShoreTel.  We had been working with the ShoreTel ECC since the Easy Run days and considered it one of the best small to medium call center solutions in the market.  We still love it, but it has not had a major feature enhancement in years!  In a call center world dominated by omni-channel solutions, this lack of new functionality, in our humble opinion, seems to be the end of the road for this product.  (As an aside, Avi is now back at Tadiran and the company has acquired the Easy Run code).

Click2WebChat

For most of the last decade a primary revenue source for DrVoIP was the ongoing support of ShoreTel ECC contact centers.   We think we have installed and maintain more ECC call centers than any other vendor on the planet.  Clients would regularly make requests to enhance ECC.  A common request for example, was to enable SMS or TEXT messages to be routed to the next available agent.  We would code the solution and satisfy that client only to repeat that exercise the next time someone asked for that solution.   For this reason, we determined to productize the solution and created Click2WebChat which brought Text, Video, Chat and Web sharing into the ShoreTel ECC arena.

ShoreTel Speech Recognition IVR?

There is no reason for ShoreTel ECC to be without speech recognition, natural language processing or chat bot technology.  We now regularly front end ShoreTel ECC with AI bots that eliminate the need to “Press 1 for anything”.    You can place a call into a ShoreTel ECC and have a much richer customer experience by offering a natural language interface.   Imagine calling an ECC and having it answer “welcome to the customer support line, how can I route our call”.   Speech Recognition is clearly a more effective solution that rattling off a long list of possible options that the caller can self navigate with a good memory for lists and a touch tone dial pad.  We have been designing and building AI bots that work with ShoreTel ECC and make life a lot easier for both ends of the call center phone conversation.  It is good for the customer and good for the Agent, shaving valuable minutes off each phone call to your ECC.

ShoreTel Chat Bots?

If you look at the content of phone calls to your contact center, you will notice that some large percentage of your customer requests are for the same reasons.   Most call centers have already learned to create a Frequently Asked Questions (i.e. FAQ) database for use by the agents.   The agents do not have to be subject matter experts to answer questions, they just need access to the FAQ database.   Now, what would happen if that database was at the end of a Natural Language processing speech recognition bot that could handle that entire customer interaction without requiring a agent at all?   It is not going to eliminate agents, but it will shift the work load such that agents are used to handle the percentage of your customer requests that are outside the FAQ database.   This is where Chat Bots come in and do an excellent job 24X7, without vacations, holidays, sick days or breaks!

Long ago, we had a company Cobotyx that made “robot receptionists” or COBOTS.  We learned that saying you were replacing low pay receptionists with a low cost machine, was not very smart.   We borrowed an expression from the cybernetics thinker Dr. Norbert Wiener in his 1950 publication “The Human Use of Human Beings” and learned that we are not here to replace humans; we are here to free humans to do the things that only humans can do.

So, if you are considering updating your ShoreTel ECC to add any of this functionality, give us a call and learn just how easy and cost effective this technology can actually be.  – DrVoIP@DrVoIP.com

 

 

 

 

 

 

 

 

Amazon Connect Call Center Planning

Basic Amazon Connect Configuration  Overview

Creating an Amazon Connect cloud based call center is relatively easy for a non-technical business process manager to implement.  You do not have to be a software engineer to get a basic inbound call center operational in a remarkably short time, often less than an hour.   Setting up a basic inbound call center however, is generally not going to meet your over all call center functional requirements and you will need some software engineering assistance from not only experience call center professionals, but from engineers who are certified and experienced in all Amazon Web Services!  A Call Center will generally require some integration with CRM solutions, or databases that can provide custom routing based on customer historical interactions.     You may also want to replace old world phone trees or Interactive Voice Response (IVR) systems with modern Chat Bot options!   Why “press 1 for this, or press 2 for that” when the natural language speech processing is available.

What Information do we need to setup our Call Center?

Generally a basic startup inbound call center deployment starts with a Call Flow Plan.   To help you better understand the concept of “Call flow”, lets walk through a basic Amazon Connect configuration:

  1. First you will need to create an Amazon Web Service Account.  This is very simple and though there is a free tier, you will need to put in a valid credit card to open the account.
  2. Once you create the account as the root owner, you will then need to go to IAM and create a user account that has permissions to create an Amazon Connect instance and also to access the various other services your call center may need.
  3. This new user should then login and find Amazon Connect and launch a new instance in the Region you want to make use of (i.e. US-East)
  4. Once the Instance is created you will do the following in this order:
  • Claim a Phone Number – You claim a number through Amazon and it can be either toll free, or a direct dial local number of your choice
  • Establish your Business Hours of Operation – When are you open and when are you closed?  Global or by Customer Service Queues
  • Create Customer Service Queues (CSQ) – Technical Support, Customer Service and Sales are typical examples
  • Create Prompts – What does a caller hear at each step through the call flow?  You can do these in TEXT format for conversion to speech and then later, when firm, record with human voice
  • Create Contact flows (Call Flows) – Answer Call, Play Prompt 1, Get caller input, route to caller choice, queue if no agent available. Here is a short video we created on the importance of good call flows.
  • Create Routing Profiles – Queues are placed in these profiles. Users are put in Queues together they determine who handles what callers
  • Create Users and assign them to Routing Profiles

This information will be the basic configuration required to build a very basic Inbound call center.  With this information complete, Agents will be able to log into the customer service queue they are assigned to handle.   You should be able to call your claimed number and be routed through your flow to an available agent.  If not agent is available, callers will queue and listen to the care prompts you have provided.   All this is captured in both real time metrics and historical reporting.

Moving from a Basic to an Intermediate Call Center

You basic call  center will have many additional requirements that will generally require a more experienced design and implementation engineer to become involved!  So lets revisit the items under step 4 above and look at the options that might exist beyond that basic configuration:

Claim a Phone number – Generally you will call forward your existing number to this new call center number.  Optionally, you can “port” or move your current number directly to Amazon.   More importantly, you will generally have more than one phone number.   Phone numbers generally terminate in either an IVR or directly into a CSQ.   Ideally if you can assign a phone number directly to a CSQ you can avoid prompting callers to select from a menu and this is always a better solution.   Why “Press 1” for Spanish, if you could publish a number that is always speaking Spanish.   If the Caller is going to be prompted by an IVR, the question is what does that menu of options include?  Someone has to write this out so that the various outputs can be mapped to required call flows.  The next question is should this be a “Press X” type of IVR or would a natural language speech interface be more appropriate?  What would you prefer to have your callers hear? “Please press 1 for sales and 2 for service” or “Thank you for calling, how can I direct your call”?   Amazon has a service named LEX (you may have heard of his sister Alexa) that can be added to replace or augment the old “Press” option menu!

Business Hours – Seems straight forward, you list out your work days and your closed days.   The real question is do all CSQ’s fall under the same time calendar? Or is Technical Support open on days and times when the Sales line might be closed?  If so you will need to create a business hours time/calendar for each CSQ in your deployment.   You might also want to create a business hours schedule for when we stop offering callers the call back option.  For example, we are open from 9-5 Monday through Friday.  However, at 4:30 we do not want customers holding for an Agent to be offered the option of a call back.  This would require a dedicated business hour schedule for that function.

Create CSQ’s – Clearly each queue has to have a unique personality, schedule and agent pool.  The call flow for each queue may be different.  Some options offered callers to Technical support may not be offered to callers to the Sales line!  Just create a list of queue names to become part of your call center call flow.

Create Prompts – Generally we encourage the creation of prompts to be among the first items on your “to do list”.  Thinking through the message your callers hear as they self navigate your call center can help you plan  your call flows more effectively.    Amazon offers a service that is build into Amazon Connect named Polly!  Polly is a “text to speech” engine and a great tool for developing prompts.  We prefer to use this solution until we debug your call center call flow and everyone agrees the prompts are exactly as required. Then, even though Polly has many excellent voices to choose from, you can then have these scripts professionally recorded.   We can help you with that as well!

Contact Flows – This is the basic blue print for how your call center works!   It is a series of building blocks that define the customer experience from the first incoming ring, until the last interaction and call termination.   Each Phone number that enters the call center needs to have a diagramed “call flow” that shows the various steps the caller is to navigate.  It might look something like:

  • Call is received after business hours and hears “You have reached us outside of our normal business hour M-F 5-9.  Please hold and we will transfer you to the message center”.
  • Caller is answered with prompt “thank you for calling, you call will be recorded for service improvement”;
  • Caller is routed to IVR Tree: “Please Press 1 for Sales and 2 for Service”
  • Caller that Presses 1:  Capture the Caller ID and use that to look up the caller in Salesforce.Com and then transfer the caller to the next Available Agent in the Sales CSQ along with the SalesForce screen pop.
  • Caller that Presses 2; Is transferred to another IVR menu: “Please Press 1 for new order, or press 2 to check the status of an existing order”.   Caller that Press 1 is sent to SalesNewOrders CSQ.  Caller who presses 2 is transferred to another IVR: Press 1 if you know your order number”

Clearly this would be better drawn as a “organizational chart” but we think you get the  basic requirements of a call flow.  When working in Amazon Connect your call flows will be graphically constructed and look something like this:

 

Create Routing  Profiles – Call profiles are used to match callers to a queue or a list of queues.   So a phone number might point to a contact flow that offers the caller a choice between Sales and Service.   Choosing Sales, for example will route the caller to a profile that contains a list of Sales Queues and priorities.  You might say route the caller to Sales and if they are not answered within 60 seconds route them to customer service priority queue for handling.  Call profiles enable the list of queues, the order of queues and the priority of queues for this reason.

Major Functional Feature Enhancements

It is rare to find a call center that does not have a requirement to integrate with a CRM package like Salesforce.com,  SugarCRM or EPIC.    Often enterprises will have a custom database on their internal network that contains customer specific information that can be used to assist in routing callers, or providing additional screen pops to agents.   Chat Bots are also becoming important in off loading typical requests to an automation process that speaks natural language!   Did you know that Amazon Web Services has a range of services that include transcription, language translation and language comprehend?  You can run your voice recordings through a transcribe utility that you can then “key word search” to help improve agent productivity.  Or run that same recording through a language translation service that can take input in one language and create out put in another language.  How about TEXT messaging and Email Options?    Not all customers want to call, some may want to send an email or text message to the next available agent.  The functionality of your call center is shaped only by your imagination!  If you can envision it, Amazon Connect can implement it!

Other Useful DrVoIP Amazon Connect Subject Matter Posts and FAQ page!

We have yet to find a Call Center requirement we could not implement with Amazon Connect and the every growing library of Amazon Web Service solutions!  If you can imagine it, we can implement it.   Let’s put our heads together and construct a call center that meets and exceeds your call center requirements!   Contact DrVoIP@DrVoIP.com, or Call 844-4-DrVoIP – and ask for the Doctor!

 

 

 

 

 

 

 

 

 

 

 

Understanding Amazon Connect Call Center Pricing!

Amazon Connect Basic Pricing Model

Even the most hostile competitor will grant that Amazon has changed the pricing game in call center technology.   “No license fees” and “pay only for what you use” are compelling strategies that would stop a man on a galloping horse!   Amazon typically summarizes the cost of its Connect call center as consisting of three components; the service usage charge, the cost of a ten digit voice number and the cost per minute of using that voice number.

Pricing Examples

An end-customer calls using an Amazon Connect US toll-free number in the US East (N. Virginia) region, answered by an agent on the Amazon Connect softphone. The call lasts 7 minutes.  There are 3 separate charges that apply for this call:

1. There is an Amazon Connect service usage charge, based on end-customer call duration. At $0.018 per minute * 7 minutes = $0.126

2. There is the day charge for use of the US toll-free number. At $0.06 per day * 1 day = $0.06

3. And there is an inbound call per minute charge for US toll-free numbers. At $0.012 per minute * 7 minutes = $0.084

So the total for this call is $0.27 (plus applicable taxes, fees, and surcharges).

This cost analysis is accurate but assumes that your call center is an isolated model with not integration with any other AWS Service.   Optional services, used to enhance your Call Center functionality and improve the customers experience have additional charges that are not reflected in the basic price example above.   To get a more accurate picture of the true cost of a call center we need to make some assumptions as to how an average call center is configured, noting the various service that may be required to implement the requirements of that call center.   Then we can look at the additional service costs and improve our understanding of the true cost of an Amazon Connect Call Center.

Real World Call Center Requirements

Let’s take a look at several very basic, yet very real world call center requirements and then evaluate the cost of the additional services.

  • Custom Call Routing

    • Most if not all call centers have some kind of call routing algorithm that usually require and external computational resource in the form of a database and the code or application that evaluates the database information.   For example, assume that we want to route calls based on the callers possible location using the Area Code displayed in the incoming caller ID.   Additionally, let’s assume that we want to evaluate the callers relationship with our company be determining if they are a new customer or an existing customer.  In both cases we would be looking up the callers incoming phone number in an external database to resolve either or both of these questions.  We would route the caller to the Agents that handle New  York, or route the caller to Agents that handle new customer or existing customers.   There would be any number of technical solutions for implementing this caller lookup, but for purposes of discussion, let’s just assume we will not spin up a Windows SQL Server in an EC2 instance, but use AWS Serverless solutions that include a DynamoDB table and some Lambda functions to operate on that data!
  • Holiday and “Ad Hoc” Closings

    • Call Centers operate on dynamic schedules that very often impact the handling of inbound calls.   Are we open or closed sounds like a simple decision, but it does require some additional “belts and suspenders” to get an answer to that question.   If we close on Holidays, we will need to reference list of days we are closed (read: database).   Some call centers enable supervisors to temporarily close a customer service queue for a team meeting.  Depending on the sophistication of this feature the supervisor might also create a custom prompt to be played to the caller during the team meeting.
  • Real Time Queue Metric Displays

    • Again, call centers typically display the status information of the various customer service queues that comprise the call center.   We want to know how many folks are waiting in each queue, how long they have been waiting and highlight the caller that has been waiting the longest.  When we answer a call we update that data set and when we terminate that call we update that dataset again.    Agents often want to see the status of their supervisor and team mates.  Are they “talking”, “idle” or in some “release” state?   AWS Connect has a library of API’s to help with the analysis of this information but it will require additional services to make use of that information in a way that has a positive impact on the call center stake holders.  (Read: Kinesis streams, DynamboDB and Lambda functions).
    • Perhaps you will want to run these recordings through transcription and translation services.  AWS has some exciting NLP and AI options that will impact that call center in astonishing ways.  Imagine English Call Center Agents being able to interact with Spanish, French or Chinese speakers!  Transcribing speech in realtime and popping agent prompts or recommended responses based on sentiment or key words used by the caller are all viable options within the AWS service stack available to an AWS Connect Call Center.
  • Logging & Recordings

    • Call Centers typically record phone calls for a variety of compliance and service improvement. Those recordings need to be stored somewhere along with your real time contact record trace logs (Read: S3 bucket).
  • Voice Analytics 
    • AWS has a service LENS which provides transcriptions of voice recordings and applies sentiment analysis on that recording.  Usually a third party provider in other solutions but now included in Amazon Connect with an additional charge.
  • Single Sign-on Options for Agent Login/Out

    • Cognito, SSO with SAML or other authorization options.
  • Custom Agent Dashboard and Real Time Display

    • Most folks will find the CCP or softphone that comes standard with your AWS Connect instance to be very useful for basic answer, transfer, hold and consult operations.  Getting additional information displayed to the agents however may require additional desktop display options.   For example, how do you retrieve and playback those phone call recordings?   Do Agents need to add a “disposition code” at the end of a phone call?   How is the queue and agent team status information displayed to the agents?  Do Agents work with channels other than voice?  Do they handle Text messages?   Chat sessions?  Social Media messaging?     This options will require an Agent interface that can display this information and enable the agent to interact with these other channels.

Real World Call Center Example

Granted the above requirements are very basic, but they are representative of the type of services that a call center would expect to be available and they also have additional service charges not covered in the basic AWS Connect Pricing Example we listed above.   Let’s take a real world call center example and then apply the additional charges that would be incurred if we were to implement the above requirements.    In this example we are drawing from an actual day in the life of an actual call center that is considering migrating to AWS Connect.

Daily 70 Agent Call Center Utilization:

  • Inbound Phone Calls for the day: 4959
  • Average Call Handling Time: 7 minutes per call
  • Total Minutes of use: 34714 minutes or 578.5 Hours
  • Base AWS Cost $624 (assume telephone carrier costs the same across all competing options and are not included)
  • Base Annualized assuming 261 working days = 9M Minutes or $163,086.00 per year in AWS Connect Usage Charges

Additional Service Costs

The most costly services in this very simple example would be DynamoDB and Lambda.    DynamoDB pricing has several components; the size of the Table for data storage (.25GB), DynamoDB Streams, Read ($0.09 per RCU-month),  Write Requests ($0.47 per WCU-month).   The pricing for Lambda is far from simple: A free tier followed by $0.20 per million requests plus $0.00001667 per GB-second of ‘compute time’ used per month plus the cost of the API Gateway or streams.Each incoming phone call will result in:

  • Lambda Call to DynamoDB Table for Routing Information
  • Lambda Call to DynamoDB Table to determine Possible closing
  • Lambda Call to DynamoDB Table to add caller to Queue count and update display
  • Lambda Call to DynamoDB Table to remove Caller from Queue and display when call answered
  • s3 Storage increase of 7 Minute recording Object (.023 per GB)
  • s3 Storage increase for Logs and Contact Trace Records (.023 per GB)
  • Agent Login/Out Call to Cognito or SSO SAML provider (.15 per 10000 sync operations)
  • Summary –
    • >19K Lambda Calls per day, 5M  per year
    • >19K DynamoDB Read Requests
    • >19 DynamoDB Write Requests

Other important service considerations

Advanced functionality like Natural Language Processing, Speech Recognition, Transcription, Translation, Voice Analytics, Workforce management, Polly and LEX are some of the other services that you will undoubtedly make use of in your call center design.  These will all be billed as AWS line items outside of the Connect usage charges.    The above Basic functionality Example is probably adding an additional $25 a day or $6K a year to the cost of an Amazon Connect Call Center based on the above call center stats!

Clearly, unless you have a team of software engineers on your staff that understand these AWS service in addition to their coding skills, you are going to need design and implementation expertise.

Again, though pricing can get complex and often has many components that are not easy to identify like data transfer, encryption and acceleration it is all more than manageable and very cost effective.   In fact all of the above functionality could be included in the use of a custom dashboard from Dextr.Cloud which would give the Agents and Supervisors all the real time status information they require, enable agent to agent chat, email, text, supervisor alerts, monitoring and coaching and a growing list of new features as the product development map unfolds!  This functionality could be fixed for a modest charge of $69 a month per simultaneous agent access.   Small price to pay for that list of feature, would you agree?

 

 

SUMMARY of COST CONSIDERATIONS

We see five areas for understanding Amazon Connect:

(1) Carrier cost = DNIS/800 as published generally .03 center per day for a DID number and .06 cents per day for a toll free number/

(2) usage cost for using the carrier per published price generally .0022 for DID and .012 for toll free

(NOTE – the above charges would be required of any solution you are considering, generally AWS will be less costly however)

(3) .018 connect minute service amazon connect  you are billed from the time call comes in to your call center until it terminates.  It does not matter how many agent you have as you do not pay for agent licenses as is the case with the usual cloud call center providers.

(4) other AWS services like chat (.004),  LEX (4000 speech requests estimate .004 per request or $16 ; lambda ( 1 Million request free per month then .00000002083 per request) /dynamoDB  (https://calculator.aws/#/)  and other service they may use like S3 for storage etc. (5) dextr (.003 per logged in minute)(edited)

We have an AWS Pricing Calculator that can help you with these more advanced calculations, just give us at call at 800-946-6127 and we will make it available to you.   We can provide you with seats in our demo call center if you would like to try both Dextr and AWS or we can build you a proof of concept call center in your AWS account for a modest fee.

 

 

IT First Responder SMS Hotline!

If you work in an enterprise IT environment as a team member you know the drill for a system down emergency. Someone alerts someone that the users are unable to access the Corporate Intranet! Panic! A ticket is initiated at the corporate help desk, and a phone call is made to the IT Director who then needs to figure out if we are having a sever failure, network failure or application failure.

The CEO, now getting phone calls from the operating executives, has now called the CIO who in turn is beating up on the IT Director and stuff starts to roll downhill. Somebody sends out a group conference line, the email stream starts up and all hands on deck are scrambling to identify the root issue.

I find the email route is just to confusing and nobody knows what the current status is as people chime in on the email, adding input and more times than not, asking for updates to pass up the line. Trying to work an issue with an open conference bridge is not real helpful and some folks did not get the email that has the conference bridge line number so key content is missing anyway.

This scenario happens way to often and we determined to find a better solution!  The result is a SMS2SMS a kind of “group text” for first responders.   Basically, you publish a number and have your stakeholders text the word “JOIN” to that number.  This will subscribe that user to your list.   Future texts sent to that number will now be copied to all other list members.   Members can STOP if they no longer want to be part of the list, but generally this is an excellent solution for first responders in any emergency management situation.  

Hit us up and we will set you up with a demo!

 

 

 

 

 

Amazon Connect Configuration Best Practices – Part 3 After Hours Call Flow with SMS!

Providing options for callers to you contact center after normal business hours is always a good practice. Our standard “after hours call handler” makes use of several options:

  • Send Caller to Voice Mail or Message Center
  • Send a Text Alert to an on call team member
Download After Hours Call Handler with SMS notification Option
You must register on home page to download

The text notification step requires some additional AWS services including PinPoint, SNS and Lambda functions. For this option to work, you will need to setup an SNS topic and make use of PinPoint to get a phone number to associate with the call block.

In the above call flow block, we invoke the lambda function when the caller selects that they want a call back from the on call team member. Lambda then interacts with PinPoint and SNS to send a canned message “an after hours caller needs help” sending both the message and the contact phone number to the SNS subscribers. This is a very effective solution for integrating SMS into your contact flows and is ideally suited to “on call” notifications.

Amazon Connect Configuration Best Practices – Part 2 Customer Queue Flow

Making the caller “comfortable” while waiting in queue for the next available agent is the primary role of a “customer queue flow”. Our standard practice is to provide a range of options that can be turned on or off as desirable for a specific CSQ. The main greeting contact flow discussed in Part 1 will attempt to hand the caller off to an available agent, but if none are available, the caller is moved to the customer queue flow.

The “customer queue flow” we typically provide does some initial setup and status checking:

  • Set Loop Prompts (Music and messages and time)
  • Check Queue Status
  • Check Call Back hours of Operation
  • Play EWT prompt
  • The Offer the Caller options (Wait, Voice mail and Call Back)

In our standard queue hold we check the queue status for “time in queue” of 3 minutes. We use this “poor mans” estimated wait time to provide an option to the caller if they are in queue longer than 3 minutes. We offer three options; continue to wait for next available agent, transfer to voice mail (or operator) and “call back”.

We also create a schedule for offering the call back option. When your call center closes at 5PM you may not want to offer the call back option after 4PM, so we check the schedule and if the caller is after the specified time in the schedule, we do NOT offer the call back but move to a block that only offers wait or voice mail.

DemoCustomerQueueHoldwithCallBack call flow download link

You must register on the Home page to download script

This contact flow also has the ability to prompt the caller to leave a call back number. This step requires some SSML in the text to speech block as we want to confirm the number the caller entered and give them an opportunity to correct any errors. First we prompt the caller to enter the phone number we should call them back at.

The Set Contact Attribute block is used to assign the callers input to a variable we can call on later in the flow:

In this example we are setting a destination key of “numberinput” and stuffing that variable with the system provided attribute “stored customer input”. It is important to set the destination key as any further use of this block will over write the stored information which you will need to reference later during the playback verification step.

This block reads the callers phone number back to them as an SSML object as illustrated above. Note that we reference the numberinput from the set contact attribute block as $.Attributes.

Amazon Connect Configuration Best Practices – Part 1 Main Greeting options

Every Call Center is in fact unique, but the all share a common theme that can be encoded for recreating deployments quickly. Generally we divide Contact flows up into manageable contact flows that compartmentalize call handling. For example we generally create a MainGreeting, QueueHandling and After hours Call Handling call flow and these three basic contact flow blocks provide some very powerful options!

Generally, we attach the incoming phone number to the MainGreeting Contact flow. This flow is very important as we use it to setup all the required variables required for whatever CSQ this greeting will front end. This contact flow will usually perform the following:

  • Set the voice to use for Polly based prompts
  • Enable Logging behavior
  • Enable Call Recording behavior
  • Set Agent Hold Behavior
  • Set Customer Hold Behavior
  • Set the Queue Hold Behavior
  • Set the Customer Queue
  • Set the whisper behavior
  • Set the Working CSQ
  • Invoke Lambda function to check for special closing
  • Check Operating hours
  • Prompt and Collect Caller Input
  • Transfer to Flow or Queue as required

These are all critical parts of the overall call flow and set the stage for call handling throughout the rest of this callers experience. Not burdening the the contact flow with all the queue options while awaiting connection with an agent, makes the flow more manageable!

If the caller can not immediately be routed to the next available agent, they are passed into the contact flow that describes the experience the caller has while waiting including the presentation of any options the caller might elect to initiate while holding.

DemoMainGreeting Contact Flow down load link!
You must register on the Home page to download the script

We will cover the Queue Hold options in the next post!