Welcome back to the final blog post in this series! In parts 1, 2 and 3, we set up an Amazon Lex bot to converse with users, receive and validate verification input, and perform a password reset. While we’ve successfully tested this functionality in the AWS console, we want to provide our users with the ability to call and talk with the bot over the phone. In this blog post, we’ll wire up Amazon Connect with our bot to provide this capability.
What is Amazon Connect
Amazon Connect is a Cloud based contact service center that can be set up in minutes to take phone calls and route them to the correct service center agents. Additionally, Connect is able to integrate with Amazon Lex to create a self-service experience, providing a cost effective method for resolving customer queries without having to wait in queue for a human agent. In our case, Lex will be integrated with Amazon Connect to field password reset requests.
Provisioning Amazon Connect
The following steps provision the base Amazon Connect tenant:
- Begin by heading to the AWS Console, then navigate to Amazon Connect and select Add an instance.
- Specify a sub-domain for the access URL which will be used to log into Amazon Connect. Select Next step.
- For now, skip creating an administrator by selecting Skip this, then select Next step.
- For Telephony Options ensure Incoming Calls is selected and Outbound Calls is unselected, then click Next step.
- Accept the default data storage configuration and select Next step.
- Finally, review the information provided and select Create instance.
That’s all that’s required to provision the Amazon Connect service. Pretty simple stuff. It takes a few minutes to provision, then you’ll be ready to begin configuring your Amazon Connect tenant.
Configuring Amazon Connect
Next, we need to claim a phone number to be used with our service:
- Once Amazon Connect has been provisioned, click Get started to log into your Amazon Connect instance.
- On the Welcome to Amazon Connect page, select Let’s Go.
- To claim a phone number, select your preferred country code and type then select Next. You may find that there are no available numbers for your country of choice (like the screenshot below). If that’s the case and it’s necessary that you have a local number, you can raise a support case with Amazon. For testing purposes, I’m happy to provision a US number and use Google Hangouts to dial the number for free.
- When prompted to make a call, choose Skip for now.
You should now be at the Amazon Connect dashboard where there are several options, but before we can continue, we first need to add the Lex bot to Amazon Connect to allow it to be used within a contact flow.
Adding Lex to Amazon Connect
- Switch back to the AWS Console and navigate to Amazon Connect.
- Select the Amazon Connect instance alias created in the previous step.
- On the left-hand side, select Contact Flows.
- Under the Amazon Lex section, click Add Lex Bot, and select the user administration bot we created.
- Select Save Lex Bots.
Now that our bot has been added to Amazon Connect, we should be able to create an appropriate Contact Flow that leverages our bot.
Creating the Contact Flow
- Switch back to the Amazon Connect dashboard then navigate to Contact Flows under routing on the left sidebar.
- Select Create contact flow and enter a name (e.g. User administration) for the contact flow.
- Expand the Interact menu item then click and drag Get customer input to the grid.
- Click the Get customer input item, and set the following properties:
- Enable Text to speech then add a greeting text (e.g. Welcome to the cloud call center. What would you like assistance with?).
- Ensure that Interpret as is set to Text
- Choose the Amazon Lex option, then add the Lex Bot name (e.g. UserAdministration) and set the alias to $LATEST to ensure it uses the latest build of the bot.
- Under Intents, select Add a parameter then enter the password reset intent for the Lex Bot (e.g. ResetPW)
- Select Save to save the configuration.It’s worth noting that if you wanted to send the user’s mobile number through to your Lex bot for verification purposes, this can be done by sending a session attribute as shown below. The phone number will be passed to the Lambda function in the sessionAttributes object.
- On the left sidebar, expand Terminate/Transfer then drag and drop Disconnect/Hang up onto the grid.
- Connect the Start entry point to the Get Customer Input box and connect all the branches of the Get Customer Input Box to the Disconnect/Hang up box as shown below.
We could have added more complex flows to deal with unrecognised intents or handle additional requests that our Lex bot isn’t configured for (both of which would be forwarded to a human agent), however this is outside the scope of this blog post. - In the top right-hand corner above the grid, select the down arrow, then Save & Publish.
Setting the Contact Flow
Now that we have a contact flow created, we need to attach it to the phone number we provisioned earlier.
- On the left sidebar in the Amazon Connect console, select Phone Numbers under the Routing menu then select the phone number listed.
- Under the Contact Flow/IVR dropdown menu, select the Contact flow you created, then select Save.
Testing the Contact Flow
Now that we’ve associated the contact flow with the phone number, you’re ready for testing! Remember, if you’ve provisioned a number in the US (and you’re overseas), you can dial for free using Google hangouts.
That’s it! You now have a fully functioning chatbot that can be called and spoken to. From here, you can add more intents to build a bot that can handle several simple user administration tasks.
A few things worth noting:
- You may notice that Lex repeats the user ID as a number, rather than individual digits. Unfortunately, Amazon Connect doesn’t support SSML content from Lex at this time however it’s in the product roadmap.
- You can view missed utterances on the Monitoring tab on your Lex bot and potentially add them to existing intents. This is a great way to monitor and expand on the capability of your bot.