AWS Contact Center

Make predictive and progressive calls using Amazon Connect high-volume outbound communications

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.

Amazon Connect’s high-volume outbound communications for calls, text and emails now give organizations a simple, embedded, cost-effective way to contact millions of customers daily for communications like marketing promotions, appointment reminders, and upcoming delivery notifications without having to integrate third-party tools. Contact center managers can easily schedule and launch high-volume outbound communications by simply specifying the communications channel, contact list, and content that will be sent to customers.

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 new 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 project” 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”.
  7. Choose “Customer managed keys” on the left toolbar, copy “Key ID” of “amazon-connect-campaign-key” from the list.
  8. Run the following aws cli command:
  9. aws connect-campaigns put-connect-instance-config connect-instance-id {replace_with_instance_id} encryption-config keyArn={replace_key_id},encryptionType=KMS,enabled=true region {region}

Step 3: Setting up permissions for Amazon Connect to access Pinpoint:

  1. Sign into your AWS Management Console and go to Pinpoint.
  2. Choose “Create a project” at top-right.
  3. Enter “amazon-connect-outbound-dialer” and choose “Create”
  4. Choose “Skip this step” at bottom-right.
  5. Choose “All projects” on the left navigation bar.
  6. Copy the project id for “amazon-connect-outbound-dialer”.
  7. Replace {pinpoint_project_id} with the project id that you copied from the previous step in the command below and run using aws cli :
  8. aws connect create-integration-association instance-id { replace_with_your_instance_id} integration-type PINPOINT_APP integration-arn arn:aws:mobiletargeting:{region}:{aws_account_number}:apps/{pinpoint_project_id} region {region}

  9. Copy the value of “IntegrationAssociationId” from the output result.
  10. 
    		{
    			"IntegrationAssociationId": "446d64f9-92ee-4d52-a682-eda523cdf944",
    			"IntegrationAssociationArn": "arn:aws:connect:us-east-1:xxxxxxxxxx:instance/bba5df5c-6a5f-421f-a81d-9c16402bfc0a/integration-association/446d64f9-92ee-4d52-a682-eda523cdf944"
    		}
    	
  11. Replace {association_id} with the association id that you copied from the previous step in the command below and run using aws cli:

aws connect create-use-case instance-id {replace_with_your_instanceid} integration-association-id {association_id} use-case-type CONNECT_CAMPAIGNS

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

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

Security Profile

  1. Navigate to “High volume outbound communications” 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. Under “Outbound call configuration”, choose any phone number for the “Phone number”.
  8. Under “Dialer configuration”, choose “Predictive” or “Progressive”.
  9. Under “Bandwidth allocations”, enter 100.
  10. Choose “Save” button at the top-right.
  11. 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.

  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 “Define pattern”.
  6. Choose “Custom pattern” under “Event matching pattern”.
  7. Enter below JSON content under “Event pattern” and choose “Save”.
  8. 
    	{ 
    		"source": ["aws.connect"], 
    		"detail-type": ["Amazon Connect Contact Event"], 
    		"resources": "[replace_with_your_instance_arn]"
    	}            
    	
  9. Choose “CloudWatch log group” from the list box under “Target”.
  10. Enter “/aws/eventbridge/amazon-connect-contact-stream” under “Log group” or choose an existing Log group from the list box.
  11. Choose the “Create” button.

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 “amazon-connect-outbound-dialer” from the list.
  4. Choose “Segments” under the “All projects” bar.
  5. Choose “Create a segment” at the top right.
  6. Choose “Import a segment” under “Create a segment”.
  7. Choose “Choose files” button at bottom-left and select that file that you downloaded in the step 1 by double clicking on the file.
  8. Under the “Name” enter “outbound-sample-list”.
  9. Choose “Create segment”, this will take some time to load the file depending on the size and creates a segment “outbound-sample-list”.
  10. Choose “Journeys” on the left navigation bar.
  11. Choose “Create journey” on the top-right.
  12. Choose “X” and close the “Welcome to Journeys”.
  13. Choose “Set entry condition” under “Journey entry”.
  14. Choose “Add participants from a segment” radio button.
  15. Choose “outbound-sample-list” under “Segments” list box.
  16. Choose “Save” button.
  17. Choose “Add activity”.
  18. Choose “Send through a contact center” from the list box.
  19. Choose “Test-Campaign” from the list box under “Amazon Connect campaign”.
  20. Choose “amazon-connect-pinpoint-role” from the list box under “Execution role”.
  21. Choose “Save” button.
  22. Enter “Test-journey” on the top-left.
  23. Choose “Review” on the top-right.
  24. Choose “Next” on the bottom-left.
  25. Choose “Mark as reviewed” on the bottom-left.
  26. Choose “Publish” on the bottom-left.
  27. 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 fax machine is detected.
  9. 
    			"initiationMethod": "API",
    			"eventType": "DISCONNECTED",
    			"campaign": {
    			  "campaignId": "31d6b1ba-384c-4590-bb8d-680d2985dc57"
    			},
    			"answeringMachineDetectionStatus": "FAX_MACHINE_DETECTED"
    	
  10. Below is the excerpt of an event when a voicemail without a beep is detected.
  11. 
    			"initiationMethod": "API",
    			"eventType": "DISCONNECTED",
    			"campaign": {
    			  "campaignId": "31d6b1ba-384c-4590-bb8d-680d2985dc57"
    			},
    			"answeringMachineDetectionStatus": "VOICEMAIL_NO_BEEP"
    		  }
    	 
  12. Below is the excerpt of an event when a voicemail with a beep is detected.
  13. 
    			"initiationMethod": "API",
    			"eventType": "DISCONNECTED",
    			"campaign": {
    			  "campaignId": "31d6b1ba-384c-4590-bb8d-680d2985dc57"
    			},
    			"answeringMachineDetectionStatus": "VOICEMAIL_ BEEP"
    		  }
    	

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.

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: