AWS Contact Center

Make predictive and progressive calls using Amazon Connect outbound campaigns

Join us for AWS Contact Center Day, a free virtual event where you’ll learn about the future of customer service, how machine learning can optimize customer and agent experiences—and more. Register now »

Many businesses today are constrained by legacy contact center technologies that only allow inbound communications, which forces them to rely on separate applications and tools to reach customers with outbound communications. Integrating tools for outbound communications into contact centers is time consuming, expensive, and difficult to manage because each outbound communication channel (calls, texts, or emails) requires separate applications – resulting in a solution that lacks flexibility and is difficult to scale to high volumes.

With Amazon Connect outbound campaigns (formerly known as Amazon Connect high-volume outbound communications) you can proactively communicate with calls, texts, and emails to serve your customers quickly, improve agent productivity, while maintaining compliance to local regulations. With the easy to use UI you can create campaigns and contact hundreds to millions of customers daily, for use cases such as appointment reminders, delivery notifications, and debt collections, by specifying the communication channel, contact list, and content that will be sent to customers, or used to connect customers to agents. Predictive dialing capabilities coupled with highly accurate ML-powered answering machine detection help eliminate the time agents waste on unanswered calls, while ensuring you are getting the right information to customers at the right time. With outbound campaigns, natively available within Amazon Connect, you can simplify operations and reduce costs by no longer needing to stitch together third-party dialer solutions. You may use Amazon Connect outbound campaigns to make campaign calls to customers in the US from US East (N. Virginia) or US West (Oregon) regions, UK from Europe (London) region, Canada from Canada (Central) region, and Australia/New Zealand from Asia Pacific (Sydney) region.

In this blog post, you will learn how to set up Amazon Connect to make high-volume outbound communications (voice) using either predictive or progressive mode.

Overview of solution

This solution uses Amazon Connect and Amazon Pinpoint to create a campaign and make outbound calls to reach your customer’s phone number. In the Amazon Connect admin console, you will create a contact flow, where you will use a block, “Check call progress”, which will provide a mechanism to identify a live caller vs an answering machine. If it is a live caller, then route the call to an agent via queue. If it is an answering machine, leave a message using the “Play prompt” block and disconnect the call. You will configure Amazon EventBridge to write real-time events into an Amazon CloudWatch log group, which shows different types of events based on the call progress analysis.

Architecture

Prerequisites

For this blog post, you should have the following prerequisites:

Setting up the solution

These instructions assume a working knowledge of Amazon Connect, Amazon Pinpoint and Amazon EventBridge. For details on how to perform basic administration tasks with these services, see the following:

Step 1: Importing and configuring the contact flow into your Amazon Connect instance

  1. Download a pre-built contact flow.
  2. Sign into your Amazon Connect instance.
  3. Navigate to the “Routing” tab within your Amazon Connect instance.
  4. Choose Contact flows.
  5. Choose Create contact flow button at the top-right.
  6. Select drop down next to Save, choose Import flow at the top right.
  7. Choose Select, and select the A-Outbound-Campaign file that you download from step 1.
  8. Save and publish your contact flow.

Step 2: Set up Amazon Connect KMS key for Campaign management:

  1. Sign in to your AWS Management Console and go to Key Management Service. Choose “Create a key” at top-right.
  2. Choose “Symetric” and choose “Next” button.
  3. Enter “amazon-connect-campaign-key” under “Alias” and choose “Next” button at bottom-right.
  4. Choose the “Next” button at bottom-right under “Define key administrative permissions”.
  5. Choose the “Next” button at bottom-right under “Define key usage permissions”.
  6. Choose the “Finish” button at bottom-right under “Review”.

Step 3: Enable outbound campaigns for your Amazon Connect instance:

  1. Sign in to your AWS Management Console and go to Amazon Connect. Choose Amazon Connect instance that you want to enable Outbound campaigns under the “Instance alias” list.
  2. Choose “Telephony” from the left side panel
  3. Choose “Enable outbound campaigns” check box
  4. Choose “Customize encryption settings” check box
  5. Choose “amazon-connect-campaign-key” from the list
  6. Choose “Save” button at the bottom-right.
  7. In a few minutes your instance will be enabled for outbound campaigns.

Amazon Connect outbound campaigns

Step 4: Create a new campaign in the Amazon Connect instance:

Note: You need to have permissions to view “Outbound campaigns” page. An admin user can add this permission from the “Security Profiles” page, as shown below:

Security Profile

  1. Navigate to “Outbound campaigns” within your Amazon Connect instance. This is a new item that is added in the toolbar as shown below :
  2. Amazon Connect high volume outbound communications

  3. Choose “Create campaign” button at the top-right.
  4. Under “Campaign configuration”, for Name, enter “Test campaign”.
  5. Under “Outbound call configuration”, choose “A-Outbound-Campaign-With-Contact-Attributes” for the “Contact flow”.
  6. Under “Outbound call configuration”, choose “BasicQueue” for the “Queue”.
  7. Note : Before you call your customers either in Australia or New Zealand, you will need to

    1. Open a Support Ticket.
    2. Specify you want to claim a phone number, to be used for high-volume outbound communications.
    3. Specify the country where your customers reside that you intend to call (e.g. Australia, New Zealand). If you have customers in multiple countries you intend to call, open separate Support tickets for each one.
    4. Use this number provisioned for your Campaign in the next step.

  8. Under “Outbound call configuration”, choose any phone number for the “Phone number”.
  9. Under “Dialer configuration”, choose “Predictive” or “Progressive”.
  10. Under “Bandwidth allocations”, enter 100.
  11. Choose “Save” button at the top-right.
  12. Choose “Test campaign” from the list and copy the campaign identifier from the browser address bar “https://{your_instance_alias}/outbound/high-volume#/manage?id=46f7eae4-2e5d-xxxx-xxxx-5a128dd08cbf” , the identifier will be used in the next step to set up the permissions.

Amazon Connect high volume outbound communications

Step 5: Create an IAM Role for Pinpoint to access Connect Campaigns

  1. Sign into your AWS Management Console and goto IAM
  2. Choose “Policies” on the left navigation.
  3. Choose “Create policy” on the top-right.
  4. Choose “JSON” tab and paste the below content.
  5. 
    		{
    		  "Version": "2012-10-17",
    		  "Statement": [
    			{
    				"Sid": "VisualEditor0",
    				"Effect": "Allow",
    				"Action": "kms:Decrypt",
    				"Resource": "{replace_arn_of_the_key_from_step_2}"
    			},		  
    			{
    			  "Effect": "Allow",
    			  "Action": [
    				"connect-campaigns:PutDialRequestBatch",
    				"connect-campaigns:StartCampaign",
                   "connect-campaigns:GetCampaignState*"
    			  ],
    			  "Resource": "arn:aws:connect-campaigns:{region}:{your_aws_account}:campaign/{campaign_id}"
    			}
    		  ]
    		}
    	
  6. Replace the {campaign_id} that you copied from the Step 2, or you can set “*” for all campaigns.
  7. Replace {region} with the appropriate region where your campaigns are located.
  8. Replace {account} with your AWS account number.
  9. Choose “Next: tags” at bottom-right.
  10. Choose “Next: review” at bottom-right.
  11. Enter “amazon-connect-pinpoint-policy” under the “Name” and choose “Create policy” at the bottom-right. Ignore the warning under “Summary”.
  12. Choose “Roles” on the left navigation.
  13. Choose “Create role” on the top-right.
  14. Choose “EC2” and choose “Next: Permissions”.
  15. Enter “amazon-connect-pinpoint-policy” under “Filter policies” and choose “Next: Tags”.
  16. Optionally enter tags and choose “Next: Review”.
  17. Enter “amazon-connect-pinpoint-role” under the “Name” and choose “Create Role”.
  18. Enter “amazon-connect-pinpoint-role” under the “Role”, you will see the new role that you just created.
  19. Choose the role “amazon-connect-pinpoint-role” and go to “Trust relationships” tab and choose “Edit trust relationship” paste the below content :
  20. 
    		{
    		  "Version": "2012-10-17",
    		  "Statement": [
    			{
    			  "Effect": "Allow",
    			  "Principal": {
    				"Service": "pinpoint.amazonaws.com"
    			  },
    			  "Action": "sts:AssumeRole"
    			}
    		  ]
    		}
    	
  21. Choose “Update Trust Policy”

Step 6: Setting up Amazon EventBridge to log events in Amazon CloudWatch for tracking the calls that are handled by Amazon Connect.

Note : This is an optional step, it is provided as an example on how to view call progress detection events via CloudWatch logs. Do not delete the existing EventBridge rule as described by ConnectCampaignsRule-{amazon_connect_instance_id} to ensure contact outcomes from dialing are reliably tracked.

  1. Sign in to your AWS Management Console and go to EventBridge.
  2. Choose “Rules” at left side navigation bar.
  3. Choose “Create rule” at right-middle.
  4. Enter “amazon-connect-event-bridge-rule” under the “Name”.
  5. Choose “Event pattern” radio button under “Rule type”.
  6. Choose “Next” button at bottom-right.
  7. Choose “Other” under “Event Source”.
  8. Choose “Custom patterns {JSON editor}” under “Event pattern”.
  9. Enter below JSON content under “Event pattern” and choose “Next” at the bottom-right.
  10. 
    	{ 
    		"source": ["aws.connect"], 
    		"detail-type": ["Amazon Connect Contact Event"], 
    		"resources": ["replace_with_your_instance_arn"]
    	}            
    	
  11. Choose “CloudWatch log group” from the list box under “Target”.
  12. Enter “amazon-connect-contact-stream” under “Log group” or choose an existing Log group from the list box and choose the “Next” button at bottom-right.
  13. Choose the “Next” button at bottom-right.
  14. Choose the “Create rule” button at bottom-right.

Step 7: Setting up Amazon Pinpoint to make outbound calls via Amazon Connect

  1. Download sample segment file, open in an editor and replace +1xxxxxxxxxx with the numbers that are reachable and save the file. For international number, you need enter it in the E.164 format.
  2. Sign in to your AWS Management Console and go to Pinpoint.
  3. Choose “Create a project” at top-right.
  4. Enter “amazon-connect-outbound-dialer” and choose “Create”.
  5. Choose “Skip this step” at bottom-right.
  6. Choose “All projects” on the left navigation bar.
  7. Choose “amazon-connect-outbound-dialer” from the list.
  8. Choose “Segments” under the “All projects” bar.
  9. Choose “Create a segment” at the top right.
  10. Choose “Import a segment” under “Create a segment”.
  11. Choose “Choose files” button at bottom-left and select that file that you downloaded in the step 1 by double clicking on the file.
  12. Under the “Name” enter “outbound-sample-list”.
  13. Choose “Create segment”, this will take some time to load the file depending on the size and creates a segment “outbound-sample-list”.
  14. Choose “Journeys” on the left navigation bar.
  15. Choose “Create journey” on the top-right.
  16. Choose “X” and close the “Welcome to Journeys”.
  17. Choose “Set entry condition” under “Journey entry”.
  18. Choose “Add participants from a segment” radio button.
  19. Choose “outbound-sample-list” under “Segments” list box.
  20. Choose “Save” button.
  21. Choose “Add activity”.
  22. Choose “Send through a contact center” from the list box.
  23. Choose “Test-Campaign” from the list box under “Amazon Connect campaign”.
  24. Choose “amazon-connect-pinpoint-role” from the list box under “Execution role”.
  25. Choose “Save” button.
  26. Enter “Test-journey” on the top-left.
  27. Choose “Review” on the top-right.
  28. Choose “Next” on the bottom-left.
  29. Choose “Mark as reviewed” on the bottom-left.
  30. Choose “Publish” on the bottom-left.
  31. Journey will start in 5 minutes and Pinpoint will load all the contacts, request Amazon Connect to make the outbound calls to the numbers that were given in the csv file.

Pinpoint Journey

Step 8: Sign into Amazon Connect as an agent.

  1. Sign into your Amazon Connect instance as an agent who has “BasicQueue” assigned to the routing profile.
  2. Make the agent go “Available” using Contact Control Panel “CCP”.
  3. Amazon Connect will start dialing the numbers provided by the Amazon Pinpoint journey.
  4. Customer answers the call, Amazon Connect will perform call progress detection, identify a live caller, and route the call to the agent with BasicQueue skill.
  5. CCP notifies the agents about the call arrival.
  6. Agents can answer the call by choosing the “Accept” button.

Step 9: Tracking Amazon Connect outbound calls in Amazon CloudWatch Logs

Note: If you have not completed setting up CloudWatch logs to monitor call progress detection in Step 6, goto next Step.

  1. Sign into your AWS Management Console and go to CloudWatch.
  2. Choose “Log groups” from the left navigation bar.
  3. Choose “/aws/eventbridge/amazon-connect-contact-stream” from the list.
  4. Below is the example when the call was initiated.
  5. 
    		{
    		  "version": "0",
    		  "id": "05119916-ffb1-e450-c8bf-f18e9fbdbaec",
    		  "detail-type": "Amazon Connect Contact Event",
    		  "source": "aws.connect",
    		  "account": "7xxxxxxxxxxx",
    		  "time": "2021-09-19T01:22:10Z",
    		  "region": "us-east-1",
    		  "resources": [
    			"arn:aws:connect:us-east-1:7xxxxxxxxxxx:instance/a2724d62-76e1-4d51-bc18-xxxxxxxxxxxx",
    			"arn:aws:connect:us-east-1:7xxxxxxxxxxx:instance/a2724d62-76e1-4d51-bc18-xxxxxxxxxxxx/contact/795f0479-d177-40e7-b9a3-c85aea600151"
    		  ],
    		  "detail": {
    			"contactId": "795f0479-d177-40e7-b9a3-c85aea600151",
    			"channel": "VOICE",
    			"instanceArn": "arn:aws:connect:us-east-1:7xxxxxxxxxxx:instance/a2724d62-76e1-4d51-bc18-xxxxxxxxxxxx",
    			"initiationMethod": "API",
    			"eventType": "INITIATED",
    			"campaign": {
    			  "campaignId": "31d6b1ba-384c-4590-bb8d-680d2985dc57"
    			}
    		  }
    		}
    	
  6. Below is the excerpt of an event when a customer answers the call and Amazon Connect detects a live caller.
  7. 
    			"initiationMethod": "API",
    			"campaign": {
    			  "campaignId": "31d6b1ba-384c-4590-bb8d-680d2985dc57"
    			},
    			"answeringMachineDetectionStatus": "HUMAN_ANSWERED"
    	
  8. Below is the excerpt of an event when a voicemail without a beep is detected.
  9. 
    			"initiationMethod": "API",
    			"eventType": "DISCONNECTED",
    			"campaign": {
    			  "campaignId": "31d6b1ba-384c-4590-bb8d-680d2985dc57"
    			},
    			"answeringMachineDetectionStatus": "VOICEMAIL_NO_BEEP"
    		  }
    	 
  10. Below is the excerpt of an event when a voicemail with a beep is detected.
  11. 
    			"initiationMethod": "API",
    			"eventType": "DISCONNECTED",
    			"campaign": {
    			  "campaignId": "31d6b1ba-384c-4590-bb8d-680d2985dc57"
    			},
    			"answeringMachineDetectionStatus": "VOICEMAIL_ BEEP"
    		  }
    	
  12. Below is the excerpt of an event when a fax machine is detected.
  13. 
    			"initiationMethod": "API",
    			"eventType": "DISCONNECTED",
    			"campaign": {
    			  "campaignId": "31d6b1ba-384c-4590-bb8d-680d2985dc57"
    			},
    			"answeringMachineDetectionStatus": "FAX_MACHINE_DETECTED"
    	

Amazon Connect Outbound API with answer machine detection parameter

You can use the existing StartOutboundVoiceContact api to place an outbound call from Amazon Connect instance without using Amazon Pinpoint and perform call progress detection. Below is the AWS CLI command :


		aws connect start-outbound-voice-contact \
		-–destination-phone-number +11925523xxxx \
		–-contact-flow-id 1af4c152-85bf-46f6-89df-fa271450c51c \
		–-instance-id a2724d62-76e1-4d51-bc18-f898f3353ae6 \
		–-source-phone-number +1316854xxxx \
		–-queue-id 3bd04db1-xxxx-xxxx-xxxx-d5a9d0a1b3f9 \
		–-answer-machine-detection-config EnableAnswerMachineDetection=true,AwaitAnswerMachinePrompt=true \
		–-campaign-id 31d6b1ba-xxxx-xxxx-xxxx-680d2985dc57 \
		–-traffic-type CAMPAIGN	
	

In the above payload you will notice a new parameter “—answer-machine-detection-config”, which will tell Amazon Connect to perform the call progress analysis and provide the result through the contact flow. As a best practice, ensure “AwaitAnswerMachinePrompt” is set to “true”, this will ensure the control is sent to the contact flow after the answer machine has completed playing the message, which will provide you control in the logic to play something useful back to the customer using the “Play prompt” block based on your business requirements.

Cleaning up

To avoid incurring future charges, remove “Test-journey” by deleting the Amazon Pinpoint journey under the project “amazon-connect-outbound-dialer”.

Conclusion

This post walks through how to configure Amazon Connect and Amazon Pinpoint to perform high volume outbound communication. Using the new feature, you can now:

  • Set up the campaigns to perform predictive or progressive dialing in Amazon Connect
  • Format the file to upload your contact list through Amazon Pinpoint segments
  • Create and schedule Journeys and send high volume outbound communications to your customers
  • View Amazon CloudWatch logs to understand the call progress analysis and the results
  • Use the Outbound API to make outbound calls with call progress analysis via the answer machine detection parameter

Related links

To learn more about the technologies or features used to create this solution, explore the following pages: