Voice Drop with Amazon Connect Telephony
Several of our customers ask us, "how can we provide agents the ability to leave pre-recorded messages on a customers' voicemail system" inside the Amazon Connect Contact Center. This is also known as Voice Drop.
In this article, we cover how this can be solved using AWS Connect outbound API to initiate the outbound call to the intended phone number, and then perform the actions to play prompt if the call goes unanswered.
What is Voice Drop with Amazon Connect Telephony?
Many companies require the need to make outbound calls to customer profiles and if the agent gets a voicemail, they want to leave an automated message. This frees up the agent to do other work. Therefore, the agent uses the AWS Connect outbound API to initiate the outbound call, and when the agent gets a voicemail, after the beep, they press the 'Voice Drop' button in their Amazon Connect instance. This disconnects the agent from the call, and the phone system will leave the message and then disconnect.
What types are messages are left?
When the Contact Center solution is leaving a message, there are two types of messages that can be left to reach people about customer issues. One that uses TTS (Text To Speech), the other uses recorded audio.
When to use TTS
TTS is great if you want to provide an automated, yet personalized experience. For example:
"Hello Mrs. Ahmed, this is [Your Company] leaving you a message regarding your recent order. The table will be with you tomorrow between, 9 and 11 a.m. If you need to change this, simply return our call."
This provides a high degree of high quality personalization, with reference to the customer profile, including name, item and delivery slot information. As Amazon Connect uses Amazon Polly for TTS, there is a range of languages and personalities that can be used, including the impressive NTTS languages.
When to use Recorded Audio
Recorded audio is great for an 'account management' interaction. The pre-recorded audio would be recorded by the agent themselves.
"Hello, this is Sophie from [Your Company], I tried to call you today. Please can you call me back on my direct line, the phone number is 123-456-7890. Thank you."
While this provides less customer-specific information, the customer can call Sophie back on her direct toll free number.
Can I have the best of both worlds?
Yes, this can be achieved by your skills-based Amazon Connect administrator. There are some considerations that will come out during planning/scoping this out.
How can I achieve this with AWS Connect outbound API?
Amazon Connect telephony provides significant value out of the box, that enables customers to focus on the customer/agent experience. There are many Amazon Connect APIs that we can use to create the experiences above. Utilize this administration guide for implementation.
Architecture:

At a high level:
- Agents will use an Extended or Customer CCP .
- This provides the necessary UI changes for the agent to see the Voice Drop buttons
- API Gateway and Lambda
- This provides the ability to process the API requests that are triggered by the agent when they press the Voice Drop buttons
- Amazon Connect
- Provide the Amazon Connect telephony
- Create a contact flow
- Play prompt
- Amazon Connect APIs, including the AWS Connect outbound API
The magic here is the way we use all of the above together to create the Voice Drop feature in the Amazon Connect Contact Center. By using the set disconnect flow action block, we are then able to 'catch' the customer leg when the agent disconnects from the call, and perform some additional treatment.
Simply by using the set disconnect flow, this will not create the experience we need. The reason being, it gets executed for every call, even if we spoke to the customer, got a voicemail or just a ringing phone. And this is not the experience we require.
Enter the updateContactAttributes API from Amazon Connect. This API, allows you to update metadata about the phone call in real-time, and this is how we tell the disconnect flow whether to play a message or simply disconnect the caller. But how can the agent set these contact attributes? Enter the Extended CCP.
Agent Extended CCP
Amazon Connect provides a WebRTC client that can be used within Chrome or Firefox and allows agents to make and receive phone calls, along with handle inbound chats. This softphone is called Contact Control Panel or CCP. Amazon provides an API to be able to customize the features and capabilities of the CCP. (For more information see here: https://blog.voicefoundry.com/blog/amazon-connect-agent-desktop-improving-agent-and-customer-experience)
My personal favorite for creating an extended CCP is to use another service called AWS Amplify. Amplify provides the ability to create and host web and mobile applications with integrations with other AWS services such as Cognito (for Auth) and API Gateway. By using Amplify we're able to build out an extended CCP like this:

The whole bottom bar is new and provides additional features and capabilities that we'll discuss in future blogs. So let's see Voice Drop in action from the agent perspective
(Below is an animated GIF on loop)

What changes have we made?
- We have used the Amazon Connect Streams API to listen for Outbound Contacts and then when connected, present the agents two additional buttons.
- The two additional buttons allow for two different experiences.
- Voice Drop 1 will play message one within the contact flow
- Voice Drop 2 will play message two within the contact flow
- If the agent doesn't want to play a Voice Drop they can simply press 'End call'
- When the Voice Drop buttons are pressed,
- An authenticated API call is made to the API Gateway,
- The API Gateway validates the security and passed onto Lambda
- Lambda reads the provided details from the client (Agent Desktop) and updates the contact attributes
- Upon successful response from API Gateway, the extended CCP then disconnects the agent from the call. This leaves the Amazon Connect contact flow to play the required message.
As you can see this process is quick, secure, and easy enough for agents to follow. You are able to customize the buttons however you require, even listen to keyboard presses if needed to trigger them. It's all JavaScript providing you with great flexibility.