When Amazon Connect was first released back in 2017 many users were surprised that voicemail (and many other basic telephony features) were missing.
We are at the end of 2021 and still, voicemail is not a part of official functionality. Luckily things have changed. In 2020 Amazon introduced Voicemail as a separate solution that can be quite easily added to your instance of Amazon Connect. Plus there are some modifications of it developed either by AWS or by AWS partners.
You can easily add Voicemail by following this instruction:
https://aws.amazon.com/solutions/implementations/voicemail-for-amazon-connect/
Essentially it is a Voicemail/Auto-Attendant application that allows you to reach each individual agent (or user) of Amazon Connect by extension and leave a voicemail message if the person is not available. So basically it is a solution for personal voicemail boxes. Voicemail can be sent by Email and/or by SMS of the user, there is built-in Encryption and Transcription option (Speech to text).
I find that this solution is missing some quite common features of voicemail that are sometimes used by contact centers:
1) Group voicemail.
Very often contact centers offer to leave voicemail messages during non-working hours or when all agents are busy. In this case, voicemail is not associated with one user but generally associated with a group of agents.
2) Send voicemail to queue
In this case, voicemail message is sent to the queue and will be processed by the first available agent like any other type of contact. This is very similar to the callback option, except that voicemail allows clients to record a message with their voice, but generally, clients have expectations that someone from the contact center will listen to their message and contact them.
-------
The good news is that both of these features can be added to already existing Voicemail for Amazon Connect solution without major development.
In part 1 of this article, I would like to demonstrate how to add Group voicemail. Part 2 will be about sending voicemail to the queue.
****************************
OK. So how can we add Group voicemail to Amazon Connect? Here is the process:
Step 1.
We will start by implementing an official Voicemail for Amazon Connect solution.
It is fairly simple - just need to follow this implementation guide. It usually takes about 1 hour.
https://docs.aws.amazon.com/solutions/latest/voicemail-for-amazon-connect/welcome.html
After it is implemented you need to test it and make sure it works, make sure that you can log in to Amazon Connect Voicemail Management Portal and can actually receive voicemail.
Step 2.
Now we will create a "fake" agent account that will be used as a group voicemail box
- First name = "VM"
- Last name = Name of Queue (for example "Tech_support")
- Login name = VM.<Name of the queue> (example VM.Tech_support)
- Emal address - group email address that will be used to receive voicemails
Other parameters for these users can be anything you want because you would not need to log in to Amazon Connect with this user.
Step 3.
Now you need to login into your Amazon Connect Voicemail Management Portal.
1) Click on SYNC AGENTS button and your new user should appear in the list
2) Click on your VM user and configure it as required.
3) First thing you need is to assign any extension that will be used to reference this agent in IVR.
In my case, I assigned extension 7000.
4) Now you might want to enable some of these features depending on your requirements.
In my example I enabled everything:
- Transcribe
- Encrypt
- Delivery Options - Email
- Delivery Options - SMS
- Added cell phone number for SMS delivery
Step 4.
Now we will create a module that will be doing all the magic of recording voicemail message and sending it to Email/SMS.
I almost did not have to develop anything myself. I just took 2 standard flows that come with this Voicemail solution - VM-Greeting.json and VM-Agent.json, combined them into 1 module that is called Transfer_to_VM that will work this way:
1) Instead of asking a client to enter an agent extension we will pass the extension to our module using contact attribute
2) I removed all the verifications of user availability - we do not need them because we want to force transfer to voicemail
3) After that it pretty much follows the algorithm of standard VM-Greeting & VM-Agent - uses Lambda function to find a configuration of the user and starts media streaming & recording, that later will be transcribed by Amazon Transcribe and sent to email and/or SMS depending on how you configure it.
You can download this module from my GitHub:
https://github.com/contactcenterdude/amazon-connect/blob/main/Voicemail/Transfer_to_VM_module.json
NOTE: On line 235 you need to change the name of lambda function to match your configuration.
Import it to your Amazon Connect instance.
Step 5.
Now we can use our module in any IVR flow.
I created a simple VoicemailDemo flow. It emulates a situation when you want to offer the client to leave a voicemail during non-working hours.
How it works.
1) At first I play the message "Our contact center is currently closed, please call us tomorrow. If you want to leave us a voicemail press 1".
2) If the client enters 1
* First we need to add Set contact attributes block and assign voicemail user extension 7000 to user-defined attribute extensionNumber
* second - I invoke module Transfer_to_VM
Here is a screenshot of VoicemailDemo flow
You can download it from my GitHub:
https://github.com/contactcenterdude/amazon-connect/blob/main/Voicemail/VoicemailDemo_flow.json
Step 6 (optional) .
In steps 4 and 5 I gave you examples of how to offer a voicemail option in IVR before the call was transferred to the queue.
What if you want to offer voicemail for the call that is already waiting in the queue?
I created another demo flow WaitInQueue_with_VM that demonstrates how to do it.
Important:
1) This is Customer queue flow so to use it you have to use Set customer queue flow in your main IVR before the call is transferred to the queue.
2) Amazon Connect does not allow the use of modules in Customer queue flows (hopefully this functionality would be added in the future). So I had to copy all the blocks from my module directly to customer queue flow.
3) Again, you have to assign an extension to extensionNumber attribute using Set contact attributes block like we did it before.
You can download this flow from my Github
NOTE: On line 448 you need to change the name of lambda function to match your configuration.
****************
So there you have it - we can now add Voicemail option to your IVR:
- before the call was transferred to the queue
- while the call is waiting in the queue
In both cases, a voicemail message will be sent to an email address (or phone number for SMS) that is associated with a "fake" user account.
Positive side of this configuration:
- easy to setup
- does not require custom development
Negative side:
- It is not ideal from a management perspective - since it does not generate any stats
- Someone needs to constantly monitor your group email address (or cell phone number) to be able to reach clients that left voicemail messages
I'm trying to create a new contact center using Amazon Connect and this has been really helpful! Ideally I'd like to set up something similar to what you proposed, where a customer would leave a voice message for a specific department instead of a single agent.
ReplyDeleteI had issues using Transfer_to_VM_module.json when importing the module. The JSON file referred to in your post uses an ARN for a lambda function in your account. I was able to narrow the issue down to function:Amazon-Connect-Voicemail--GetAgentByExtensionLambd-ZAODgmF92llA with CloudWatch. Everything worked fine after I updated the ARN to the lambda function in my account.
Thank you Matthew!
DeleteGood job Sir ! It is well explained. I have implemented this solution, everything works fine.
ReplyDeleteThank you!
DeleteHi there! The JSON cannot be imported anymore, they give an error even after adding the custom ARNs. Could anyone give a hand?
ReplyDeleteThank you for always detailed write up on AWS Connect.
ReplyDeleteOn my side , i would like to have a customer call in , on the call flow they are asked to say something, it records what the caller said ( and send that recording to an email address)
Would i just start at step Step 4. to fulfill this