Voicemail still holds a great deal of relevance within the modern contact center and is often fundamental to acceptable customer communication. VoiceFoundry delivers Voicemail for Amazon Connect as a vital element for our customers’ contact center operations. This solution provides both agents and supervisors the ability to access voicemail messages on the fly, from any device. Whether it’s desk phone, email, mobile device or desktop application, Voicemail for Amazon Connect can be received. Notifications are also sent to the AWS Connect custom control panel (CCP) or via email as soon as a customer leaves a message.
Although some might consider voicemail to be an old fashioned feature, it is still used as an integral tool in many contact centers. VoiceFoundry’s Voicemail for Amazon Connect allows contact center agents and supervisors to either listen to or read a record of the message left by a customer. Each message is quickly and automatically transcribed to text and delivered by email or sent to the CCP with the audio file. Agents can then have the choice of reading the message rather than listening to it, allowing a more discreet method of assisting the customer.
How does Voicemail work?
VoiceFoundry Voicemail for Amazon Connect leverages a blend of AWS services including Kinesis Video Streaming (KVS), Transcribe, Lambda and DynamoDB to record, transcribe and deliver the message. The application records the message, stores the captured message in a designated S3 bucket and converts the record to text, which is then delivered via email, webpage or through a custom call control panel (CCP) within Amazon Connect.
- Message recording based on real time audio streaming
- Agent or queue based custom voicemail greeting can be recorded using recorded audio or Polly TTS
- Voicemail notification via email or SMS
- Manage messages with a simple web interface with the ability to delete, forward and even initiate a call back from the email
- Email integration to receive a transcribed, text based rendering of customer voicemails
- Simple deployment via serverless framework /CloudFormation
- Combines a rich user interface for message retrieval
- Extends integration capabilities with other standard email clients
VoiceFoundry’s Voicemail for Amazon Connect is offered as a stand-alone package that may belicensed and purchased on a per seat basis, or as a fully managed service. Both offerings include ongoing support subscriptions for future updates, bug fixes and compliance with AWS service changes. For additional information Contact Us.
Amazon Connect has excellent reporting features, both for real-time and historical analysis. Contact Trace Records (CTRs) are the primary source of data that Connect collects for every call that occurs within your contact center and are used for reporting and analysis. These records are only stored for 24 months after creation, so they don’t last forever.
CTRs contain a lot of details about the call and one of the most important parts are Contact Attributes. While these are not a necessary feature of CTRs, using them within your contact flows can yield a lot of useful data concerning the customer experience and record important events and details that occur during a call. Amazon Connect does not support searching and reporting based on these Contact Attributes, however. They can only be viewed when looking at the details of an individual CTR.
So how can we store permanently store CTRs and make them available for analysis with other AWS Services? Keep reading to understand what services are needed and how to set them up to use with Connect.
AWS Services Overview
- Amazon Connect will be our source of data by generating CTRs for all calls going in and out of your contact center.
- Check out https://voicefoundry.com/amazon-connect-data-sources-part-1/for more information regarding CTRs and other Connect Data.
Amazon Kinesis Data Firehose
- Amazon Kinesis Data Firehose is a managed data streaming service that will transport our CTRs from Connect to Amazon S3.
- With unlimited capacity and scalability, Amazon S3 is the best choice for storing our CTRs and it easily integrates with all the other services we need.
- AWS Glue is another managed service which stores the metadata and database definitions as a Data Catalog (database table schema) that we will use with Amazon Athena, based on our CTR data structure.
- Amazon Athena gives us the power to run SQL queries on our CTRs in S3, using the Data Catalog from AWS Glue.
Note: Some configuration settings are not fully supported through CloudFormation so we’ll be setting up everything manually through the AWS Console.
If you already have an S3 bucket setup that you wish to use to store CTRs, just take note of the bucket name. You can also use the S3 bucket that is used by your Connect instance to store call recordings and exported reports. Otherwise, you will need to create a new S3 bucket.
- Navigate to the S3 Service Console in AWS.
- Click on the Create Bucket button.
- Enter a unique name for your bucket. Remember this must be a unique name world-wide.
- Click Create as the default settings are enough, the bucket will already be private.
The next service we are going to set up is AWS Glue.
- Navigate to the AWS Glue Service Console in AWS.
- Start by selecting Databases in the Data catalog section and Add database.
- Enter the desired name for your database, and optionally, the location and description.
- Click on your newly created database. From here you can update the optional information if needed.
- When you click on Tables from the left-hand side, you will see all tables in that region. By clicking on your Database and then View tables, the console will automatically filter the tables to show only those for the selected database.
There are a couple of ways to create definitions for your table: manually, or with a crawler. With the manual option, you can specify the table schema yourself. With a crawler, you can schedule or run an on demand a job that can go through your data to attempt to determine the schema for you. In this case, we will go through both options; we will setup the initial table manually, then add additional definitions using a crawler.
- Click on Add tables, then Add table manually.
- Enter your table name and select the database you want it to belong to.
- On the next page, select the S3 bucket to use as your Data Store. This will be the bucket that you wish to use to store your CTRs.
- For the Data format, choose Parquet. You then need to Define a schema by clicking on the Add Column. Add the following columns and data types:
Now you have a table that resembles the data from our Contact Trace Records. Review and finalize your table configuration. We’ll come back to Glue in a little bit.
Amazon Kinesis Data Firehose
The next service we will create is an Amazon Kinesis Data Firehose. This will deliver the CTRs from Connect to S3.
- Navigate to the Amazon Kinesis Dashboard in AWS.
- Select Create delivery stream under Kinesis Firehose delivery streams.
- Enter your desired stream name.
- Choose the source of data, in this case, select Direct PUT or other sources. The other option is to get data from Kinesis Data Streams which is useful if you have other needs with the CTRs but in our case it’s not necessary. Click Next.
- Under Process records, keep Record transformation disabled. Here you can invoke a lambda function to transform your data records prior to delivering to S3.
- We do want to enable Record format conversion. Select Apache Parquet.
- Next, we will integrate our new Glue database. Select your AWS Glue region, the Glue database and table we created earlier. Select Latest for table version.
- Next, choose Destination. Due to enabling format conversion, S3 is the default and only option. So, we’ll need to select the bucket we created earlier.
- For the prefix, you can leave this blank. Firehose automatically distributes records using the following folder structure “YYYY/MM/DD/HH.” You can alter this if needed but that structure format will work for us.
- It is good to set an error prefix, such as “error/”. With this option, any records with delivery errors will get sent to this folder, isolated from other records.
- You can also specify a S3 backup destination which will store untransformed records. We’ll keep this disabled for now.
- Keep the default buffer size of 128 MB and set the buffer interval to 60 seconds.
- You can set S3 compression, encryption, error logging, and tags if desired.
- The final step is to create or choose an IAM role for Firehose to access S3 and any other needed services. Clicking the link will open a new page to create or choose a role. The default role is good enough, just change the Role name as needed. Click Apply.
- Review your Firehose configuration and finish creating. It will take a minute or two to create.
Next, we need to configure Connect to send CTRs to your new Kinesis Data Firehose.
- Navigate to your Connect Instance in the AWS Console.
- Select Data streaming from the left-hand side.
- Click the checkbox “Enable data streaming” if not already enabled. This will display options for Contact Trace Records and Agent Events. Under Contact Trace Records, Select Kinesis Firehose and select the Firehose we just created.
- Click Save and AWS Connect will update the instance and its own IAM role to access the selected Firehose.
We’ve now created all the Services we need; the only thing left is data. If your Connect instance is already live, just wait a bit for new CTR’s to be generated otherwise, start making some test calls. After you’ve got some new CTRs, check out the Amazon Kinesis Firehose in the Console. Select your Firehose and click on the Monitoring tab. You should start seeing some metrics pop up.
If it’s been more than five or so minutes with no metrics, you might want to check permissions as this is the most likely issue. If you see data in DeliveryToS3Records, you are good to go.
Navigate to the Amazon Athena Console. You don’t need to set anything up in Athena. Athena automatically looks at your Glue Data Catalog and shows your available Databases you can query. You should see your database in the drop down and tables underneath. You can simply click the three vertical dots to open a small menu and select Preview table to run a simple query. Or enter in the query tab:
SELECT * FROM "<your-database>"."<your-table>" limit 10;
Click Run query. You should see your CTRs pop up in the results window below. In the Results window, you can export your results as CSV. Your CTR data can now be queried using SQL. You’ll notice that currently, some columns have JSON strings in them. Athena allows you to query keys within the JSON using json_extract() like this:
SELECT json_extract(attributes, '$.<attribute-key>') AS "<attribute-key>" FROM "<your-database>"."<your-table>";
Visit https://docs.aws.amazon.com/athena/latest/ug/querying-athena-tables.html for more information on Querying Data with Athena.
Going back to AWS Glue for a moment, we can now create a Crawler since we have data in our S3 bucket. There are few more columns we can easily add to our table which will help speed up our queries as our data set gets larger and larger.
- Navigate back to the AWS Glue Dashboard.
- Select Crawlers from the left-hand side.
- Click on Add crawler.
- Enter desired name, tags and description are optional.
- Next, select Data stores as the Crawler source type. Choose your S3 bucket as the Data store. You can add additional data stores on the next page, but we don’t need one.
- You’ll then need to create an IAM role. You can create a new IAM role directly on this page which is convenient.
- Next, you will need to create a schedule for the crawler. Since the structure of the CTR is unlikely to change, you can just choose Run on demand. This will prevent the crawler from running unnecessarily and increasing costs.
- Now choose the database the crawler will write to. There are several options to choose from but for now, just select “Add new columns only” and “Mark the table as deprecated in the data catalog.”
- Review and finish.
Using the default configuration in setting up our table and crawler, there will be a small issue if you run the crawler first. In our initial setup, the ‘compressionType’ will be ‘null’ on the database table and ‘none’ for our Crawler. This will cause an error and the crawler will be unable to merge any new columns with the table. To fix this issue, you will need to edit our table and add the tag ‘compressionType’ as none.
- Select your table and then select Edit table details.
- Scroll down to the Table properties and add the following key-value pair: ‘compressionType’, none.
- If we run the crawler now, we should have no issues and we should see that it updated our table. Click Run crawler.
- Look at the table properties now and you should see four new columns at the end, partition_0 – partition_3. This is not CTR data but a reference to the folder structure in S3.
- Edit these columns as Year, Month, Day, and Hour. Be aware of the type that the column is set to, the default will be ‘string’ but in this case you could also select ‘int,’ which is reflected with the following query.
SELECT "contactid", "year" FROM "<your-database>"."<your-table>" WHERE "year" = 2019;
Although not noticeable with small data sets, once we are querying our data lake with millions of records, the ability to filter by these partitions will greatly speed up our queries and reduce costs since Athena charges by data scanned. In our case, this partitioning is built-in with Firehose and meets our needs, but you may have different requirements.
Check out https://docs.aws.amazon.com/athena/latest/ug/work-with-data.html for more information on working with source data and partitioning.
Amazon Connect has some great features to help you run a cloud-based contact center. It is designed to enable you to get started as quickly as possible and manage your contact center with minimal effort. Being a part of the AWS ecosystem, however, lets you leverage many other services so that you can get even more functionality from your contact center.
In a later post, we will dive further into data transformations and more complex table schemas. The next phase would be to transform this data prior to S3 delivery where you can change these JSON objects to more structured and easily queried data.
Thanks for reading! For further information on this topic or others, please Contact Us.
Contact Centers have the reputation of being big and complex systems that take years to complete from the creation of the architecture to deployment. The thinking is that only the wealthy can afford the fancy market-leading features. Well, it’s certainly not true anymore. Amazon is breaking the trend with Amazon Connect, where, in fact, you can get a basic Contact Center working in minutes and for less than you think!
But don’t imagine that this is some kind of second class version. This is the same solution that the Enterprises use!
Here you can see what this looks like from an Architecture point of view… pretty simple right? But don’t think of this as some sort of an inferior solution. This has the same features that an Enterprise level business runs with but it uses the highly available AWS Infrastructure that scales on-demand and allows to pay only for what you use! You get Telephony (Toll Free and DDIs numbers) along with IVR Menus, Call Queues, Reporting etc…and best of all you can add features as you grow.
This Amazon Connect solution is perfect for:
- Small production contact centers (IT Helpdesk / HR etc.)
- Organizations that are wanting to test and learn at pace.
Once you learn and grow with the Amazon Connect solution you’ll find more use cases for even greater features. You may end up with something like this:
Ok, so we’ve added a few extra components here, but you’ll get some pretty impressive features:
S3: This is used to Store Call Recordings. You have the option to Record Customer/ Agent or both and store these indefinitely. Audio is recorded in an Open format (WAV) so you can add tools later to analyze the information or just simply listen to them via playback which is available directly from the Amazon Connect UI.
S3: You also use S3 to save Call Reports, and, like the call recordings, you can save as many reports as you want for as long as you like. And using an AWS service called Athena, you’re able to query these flat files on demand at any time.
Lambda is a special service I highly recommend you learn about. Lambda allows code to be executed on demand and what the code does is up to the developer building it. In this scenario, we can use the data returned from the Lambda to affect the Customer Journey, provide information to the caller or provide the text for the messaging prompts. And it can integrate into other AWS Services, 3rd Party APIs or your own existing services.
DynamoDB: This is a NoSQL database from Amazon. You can store your customer orders, account information, have an administration database to affect special routing and more. When used in the Architecture above, we are able to use the Callers ANI (Phone Number) which is sent from Amazon Connect to Lambda, which looks the callers order up in the database and provides the caller with personalized information! (Self Service) The information is Dynamic and Amazon Connect can handle it with its built-in Text to Speech Engine (so no need for complicated IVR messaging). You can also provide the caller some options to update the information and Lambda can update that in DynamoDB for you.
More Advanced Architecture
The great thing here is you get to see the value on a rapid development cycle.
Ok, by now you can see how you can start small and build on your investment. The great thing here is that you get to see the value on a rapid development cycle and you’ll start to drive your own wish-list as you see more value opportunities. So lets up the ante just a little…
While this looks like a significant advancement, it’s still fairly contained. So let’s build on the previous model some more.
S3: This time we add a custom Administration Portal for your ‘Ops Team’ so that they can affect the routing via toggle buttons, close routing ad-hoc, play special messages (that they type into the portal) and respond to increasing demands etc..
Lambda: As shown previously, however, this time we also connect to SNS, Simple Notification Service. This allows us to send Mobile Notification, SMS, E-Mails etc. This can be completed DURING or AFTER the contact.
LEX: This is the AI engine that drives Alexa. You’re able to provide natural conversational interactions for the whole journey or just parts of the journey. Think about when your customer connects with you and the first thing they hear/see is:
Welcome back Donna. I see your flight has been cancelled, would you like to reschedule?
Note I say hear/see… this is because LEX is a Voice AND Text Chatbot service. You only need to code once and you can reuse that Chatbot within Amazon Connect (even export it to Alexa) and integrate it with your website / Slack etc…
Kinesis Streams: This provides the real-time streaming of all the Contact Trace Records (CTRs) data from Amazon Connect. These are the results of the contacts from Amazon Connect. The data sits in streams waiting for a consumer, in our case the Lambda, to do something with it.
Lambda: As explained above, this provides post-processing of the records and can perform actions, like a post-contact survey, and sends the data onto Firehose.
Kinesis Firehose: Firehose is a variant on Streams which is more for batch type data movement, and is needed to feed Redshift.
Redshift: This is Amazon’s Enterprise Data Warehouse solution where you’re able to run queries on massive amounts of data and where your data scientists will live.
As you can see, a contact center does not have to be big and complex or take years and lots of dollars to create. With Amazon Connect:
- You’re able to start small and grow.
- No two implementations need to be the same; you can create a solution just for you!
Note: Out of the box Amazon Connect has Service Limits, so make sure you’re aware of them. Monitor for and increase as required.
For some customers, building and supporting the technology yourself doesn’t make sense. This is where VoiceFoundry can help, our Migration and Managed Service Offerings can ensure that you take full advantage of the Amazon Connect features and pricing without needing the in-house talent.
The Amazon Connect Streams API allows you to create custom interfaces for the soft-phone and provides many functions for interacting with the current connection. It is a powerful set of tools but some of the more sophisticated functions may not be so obvious. This blog post describes how to implement a cold transfer using the plain Streams API.
Why this is so important
VoiceFoundry Salesforce Capability
Before we jump into discussing the features of the newest release of the Amazon Connect CTI Adapter for Salesforce, we’d like to mention a little bit about how we might help your organization with Salesforce. Alongside AWS, we have helped to add significant amounts of functionality to the Amazon Connect CTI package. In short, we know it well. While the package is full-featured, your business may want or need something different. We have a deep understanding of the Salesforce platform and have dedicated, certified, Salesforce team members to help with everything from consulting and guidance to building a complete Salesforce solution for you. From custom screen pops to IVR-integrated workflows to Lightning and Visualforce application development, we have your Salesforce needs covered.
One of the many things that makes Amazon Connect so powerful is the way it can integrate with other AWS services which then provide a rich baseline for our business applications. Amazon Transcribe is one of the newer services offered (it will be 1 on April 4th) and it adds an intriguing augmentation to the Amazon Connect Contact Center.
Rather than monitoring customer interactions by listening to audio files, Amazon Transcribe provides us with an opportunity to take the first step into Machine Learning and data analytics. These transcriptions can be further processed by other AWS services such as Amazon Comprehend or stored as part of an Elasticsearch cluster.
Amazon has made creating a chatbot easy with Amazon Lex. It is intuitive and quick to get going and there are some excellent blogs and white papers out there to teach you how to get started. However, these resources will only be appropriate to convey very simple ideas and have basic conversation with your customers. Here are 5 additional tips to help you out.
When migrating from one system to another there are many business processes that can be affected, some of which cannot be easily changed. We have several customers who had this very scenario with regards to the agent extension. The routing of customers to agents within Amazon Connect is based around the concept of Queues.
For direct to agent routing, Amazon Connect uses a concept of Personal Queues. Personal Queues are the login name of the agent, which is typically an email address. Personal queues provide the ability to send a customer to a specific agent, however, we are still missing those important “4 digit extensions” that your customers use. In this Blog we’re going to show you a working solution along with instructions giving you the ability to build your own.
Its been just over a year since Amazon launched the Quick Start offerings for Amazon Connect. Quick Starts are designed to be seamless and deployed in a few simple steps. Originally presented with just 5 integrations, today you have 16 to choose from. Just take a look at what’s offered:
Traditionally, integrations of this nature would have been a significant investment involving scores of people and many months of planning. While the Quick Start approach is not new, it’s certain to be new to the enterprise contact center space. When you stop and consider what’s going on in the industry today, you can really start to see how Amazon Connect is going to differentiate itself in a busy CCaaS Market.
A genuine Contact Center as-a-Service has finally arrived in the form of Amazon Connect. In the past, a typical contact center sale could be categorized as anything but as a “service”. If you needed to reduce the number of agents because of the loss of a contract or add agents during a seasonal peak time, it was difficult to negotiate the commercial and hardware constraints. The balance has finally swung in the customer’s favor with new features which include significant savings over traditional cost per agent models. (more…)
It’s no secret that universities have a constant battle keeping their curriculums up-to-date with the fast-paced development of artificial intelligence (AI) and automation. Royal Melbourne Institute of Technology (RMIT) is disrupting this institutional norm by preparing their students for working life through company mentorship programs. Companies such as VoiceFoundry, who develop innovative Contact Center technologies for enterprise, are working with students bound for Computer Science degrees to develop innovative and real-world business solutions. More businesses are looking for novel ways to engage their customers and deliver better service. Graduates entering the workforce who can demonstrate technology skills in Automation and AI are undoubtedly valued. VoiceFoundry is proud to be a part of the development of these skills.
Amazon re:Invent is one of many Amazon conferences held throughout the year, however, it’s the place to be to get up and close with AWS Product, Developer and Partner teams. Held in Las Vegas this year, the event featured over 50,000 attendees spread over 7 hotels, with 2 Expo halls, many day-long lab events, a builder fair, certification center, over 3500 breakout sessions and 4 keynotes… it sure was a hectic 5 days!
This year was filled with a mind-boggling slew of product and feature releases, which are increasing in cadence as Amazon reacts to customer demand and provides ways to secure and grow their dominance on the cloud.
After more than 20 years working with the traditional contact center technologies, Luke McNamara had seen the industry move from basic call centers to omnichannel customer experience platforms. So when we launched VoiceFoundry, he thought he had a good handle on the features and benefits of Amazon Connect and Amazon’s Customer Experience (CX) ecosystem. McNamara continues to learn in this space and the more he discovers, the more he’s impressed. Read more about about why Amazon Connect is our core CX platform.
How can you expand on the built-in reporting within Amazon Connect and use the wider AWS Ecosystem to bring real-time connect data into your existing Kibana dashboards? Amazon Connect provides out-of-the-box metrics and reporting that can generate real-time and historical metric reports to monitor efficiency and utilization, agent performance, and other information about your contact center. Sometimes more advanced reporting needs to be designed and implemented in order to meet specific requirements. In this post we’ll explore how sometimes more reporting needs to be designed and implemented in order to meet specific requirements.
There is no doubt that Amazon Connect is on a trajectory to become a powerhouse in the contact center space. In true Amazon style, the product has been released in MVP (Minimum Viable Product) stages, which allows Amazon to test and learn while gathering customer feedback which then helps shape and drives the product backlog. After all, they are on a Mission to be Earth’s most customer-centric company.
Amazon Connect is 19 months old, having been released on 28th March 2017 (Amazon Release). In the last year, Amazon has been building and releasing functions that allow you to see how they are thinking about the product and the potential it has.
Update Contact Attributes API
Released in September 2018, the Contact API for Amazon Connect can be used to update and create new contact attributes. In case you’re not familiar with the term, contact attributes are Key Value Pairs that can be used to store data up to 32767 characters in length and include information such as the name of the caller and why they called.
Interested in a hands-on experience designed to get you totally familiar with Amazon Connect? VoiceFoundry is conducting a Bootcamp October 2 and 3, 2018 in San Francisco for FREE. You just need to register in advance.
Date: Tuesday, October 2 and Wednesday, October 3, 2018
Time: 8:00 AM – 5:00 PM PST
Location: AWS Office, 475 Sansome Street, 10th Floor, San Francisco, CA 94111
Do you want to improve the customer experience of your Contact Center? Most customers today prefer to self-service; they want to get their information through a knowledgebase, wiki page, or forum posts. Millennials have grown up accustomed to email and chat rather than telephone calls. Most millennial customers are going to contact customer service directly as a last resort. All of this means that your user experience can be improved vastly through the use of a chatbot.
We’re seeing the commercial use of artificial intelligence (AI) more and more with the introduction of devices like Alexa and Google Home. People use these tools to complete all sorts of tasks such as verbally place orders for goods and services or ask for directions to a place they’re unfamiliar with.
AI also continues to transform the way companies can provide people with a better customer experience. AI is now using Natural Language Understanding (NLU) applications with IBM’s Watson to help medical providers collect and interpret clinical data from patients – and that’s just one example.
But how does it all of this technology come together? What is it that allows you to issue a command and get back what you need from an AI enabled application?