This is the third article in a series where we are taking a look at Amazon Connect. In this article, we will add some logic handling to our “Contact Flow” by adding a basic IVR. However, if you haven’t been following along, I highly advise you go back and review our previous articles:

  1. Getting Started with Amazon Connect – In this article, we set up a new Amazon Connect Instance by walking through the Setup Wizard
  2. Accepting our First Call using Amazon Connect – Once we’ve got our new Connect instance, we walk through the process of setting up our first contact flow

If there is a feature that you’d like to see a blog article on, post a note in the comments. In turn, we will do our best to take a detailed look at it and release an article about it.

Adding an IVR

Most of you will have interacted with an IVR (or Interactive Voice Response) at some time in your life. For those who may not have heard the term before, they are those recorded prompts that play when you ring a call center asking you to make a choice. “Press 1 for sales, Press 2 for Support” etc. Today we are going to create a new Connect “Contact Flow” with a basic IVR and take a look at the call flow handling. After that, we will create several options for our caller to select as well as some basic error handling. However, before starting with any of that, we need to be logged into our Amazon Connect Instance. Instructions on how to do this can be found in the previous article. Once logged into the Dashboard, go ahead and select “Routing -> Contact Flows” as shown in the screenshot below:

Once on the “Contact Flows” menu, go ahead and click the “Create contact flow” button and give your new flow the “TestBasicIVR” name.

Adding the Initial Prompt Message

First things first, our new Contact Flow is going to need an introduction prompt. We always want to let the caller know who they have called. To do this, go ahead and drag a “Play prompt” component (Under the “Interact Menu) from the Left, onto the grid. Next, we need to Drag a line between the “Entry Point” and our “Play Prompt”. This is to let Connect know the way the call should travel through the flow. Go ahead and drag a line between the “Start” circle under “Entry Point” and the “Play prompt” component.

Finally, we need to give our prompt something to play/say. This can be done by uploading prompts into the prompt library. For our example, however, we will simply add some Ad hoc text for it to read. Click on the “Play prompt” component and select the “Text to speech (Ad hoc) radio button from the list. Here we can add some simple text that Amazon Connect will read to the caller. It’s important to note that we don’t want to give our caller a choice yet. Once finished, you can go ahead and click “Save” on the “Play Prompt” menu.

Receiving Customer Input

The next task is to provide the caller with some options which will help us direct their call. From the “Interact” menu drag the “Get customer input” component onto the grid, next to our “play prompt”. Much like in the previous step, we need to drag a line between the two options to continue the call flow. Finally, we need to configure the customer input we would like to receive.

Click on the “Get customer input” component to open its configuration. Again, like the “Play prompt” component we can set a prompt for the contact center to play. Go ahead and select the “Text to speech (Ad hoc)” radio button and add some text asking the caller to make a choice. We will be taking a look at uploading and managing prompts in a future article. In my example, I am asking the caller to “Press 1 for Sales, Press 2 to support”.

Continuing through the options we are presented with two options “DTMF” or “Amazon Lex”. This is simply asking how we would like to receive the response from our caller. For this example, we will use DTMF (an acronym for Dual-tone multi-frequency signaling) or “keypad”. We will be looking at adding Lex bot into our Contact Centre in the future. Leaving the timeout at 5 seconds, we are going to click the “Add another condition” link twice. In the resulting “Option” fields go ahead and put a 1 in the first field and a 2 in the second field. These are the possible options that a caller can make when interacting with our prompt. Go ahead and click “Save” once this is complete.

Handling caller input

Taking a look at the “contact flow designer” we can see that the “Get customer input” component now has 5 options listed below it. This is unlike the previous components which have only had one. It is these options that allow us to conditionally route the call based on a users selection.

Considering all we want to do in this example is test our new IVR, go ahead and add five new “Play Prompt” components to the contact flow grid. Once this is done, go ahead and drag flow lines between each of the options and a “Play prompt” component as shown in the screenshot below

After that, open each “Play prompt” component, and add a custom message much like we did earlier. These will serve of validation to us when we call in, to confirm that the IVR is working correctly. It’s useful to note that this isn’t the most effective way of achieving this outcome and will take a look at using variables in a future article.

What we have just done is configured the “Get customer input” component to route the call different ways depending on the callers choice. We have also given the “Contact Flow” some additional options (Timeout and Error) in case something goes wrongs in the process.

Completing the Call Flow

The final step in building our new Contact flow is to add the “Disconnect / hang up” component. Once that’s done we need to link each of the “Play prompts” to it. Much like when creating a link to the previous components, simply drag the link between the “Okay” responses and the “Disconnect / hang up” component as shown below:

We now have a completed flow so go ahead and click the “Save” button. Once the “Contact Flow” has been saved, go ahead and select “Save & Publish from the dropdown below to mark it ready for use. The Dropdown menu can be found by clicking the down arrow to the right of the save button.

Attaching the Contact Flow

So, we have our new Contact Flow… Next step is to link our inbound Direct in Dial number to it. To do this, select the “Routing -> Phone numbers” option from the dashboard menu.

Once there, go ahead and select either the “DID” or “Toll-Free” number you’d like to use with this Contact Flow. This will take you to the “Edit Phone number page where we can update the number’s description and attached “Contact flow / IVR”. By selecting “TestBasicIVR’ from the dropdown list, you change which contact flow the number will direct to. Clicking “Save” will immediately update the configuration and any new call will use the new flow. This can be confirmed by ringing the phone number where you should be presented with the Introduction prompt, followed by the request to make a selection. Select different options to hear the relevant prompt being played and the call disconnected. Try this several times with different options to make sure that all prompts play as expected.


And there you have it, a Contact Center with its own IVR capable of making decisions based on a callers input. Additional functionality can be added and different types of information requested. These might include account and ticket support numbers, passwords or even commands. In the next article, we will take this a little further by adding in some Lex functionality to make it easier for your callers to interact with the Contact Center.

Amazon Web Services, Cloud Infrastructure