AWS Machine Learning Blog
Managing multi-topic conversation flows with Amazon Lex Session API checkpoints
In daily conversations, you often jump back and forth between multiple topics. For example, when discussing a home improvement project related to new windows and curtains, you might have questions like, “How about closing out on curtain styles and then revisiting colors?” When AWS launched Amazon Lex Session API, you learned how to address such digressions in the conversation. You can use Session API actions to switch an intent and continue the conversation. But in everyday interactions, you might have to deal with multiple digressions: “Let’s finish selecting windows before we get to curtains.”
How do you design conversation flows that contain a series of digressions? If you are like me, you’d have a dozen questions before even considering a specific product in a home improvement project.
With session checkpoints, you can easily design a conversation to support a switch to one of many topics. You can model the home improvement conversation as two intents: OrderWindows
and OrderCurtains
. Now it is easy to switch topics. The flows for OrderWindows
would have a checkpoint. If the user is ordering curtains but wants to complete selecting windows first, you could move the conversation back to the OrderWindows
using “windowSelection” checkpoint.
Managing session checkpoints
The Amazon Lex runtime API provides operations that enable you to manage session checkpoints for a conversation. The PutSession
and GetSession
calls enable you to define and retrieve checkpoints. Here’s how you can use the APIs to manage the conversation flows described earlier. Please review the bot schema for bot details.
Follow these steps to manage the conversation flow:
- Store the current state of the conversation
- Retrieve the previously stored state and continue the conversation
Store the current state of the conversation
Call the GetSession
API with no filters to retrieve the current state of the conversation between your bot and the user. The GetSession
API call is followed by a PutSession
API call, which applies a checkpoint ‘windowSelection’ onto the OrderWindows
intent. The PutSession
call is shown in the code example:
Retrieve the previously stored state
At this point, the OrderCurtains
intent has completed. Issue a GetSession
API call, while passing a ‘windowSelection’ checkpointLabelFilter.
This call results with the matching intent (OrderWindows), which received the checkpoint label in the previous step.
Continue with the conversation
Finally, issue a PutSession
API call, setting the next step in the conversation to be continued where the user left off in OrderWindows
. The following code example lists the details for GetSession
:
Getting started with Session API checkpoints
In this post, you learned how to use Session API checkpoints to manage multiple digressions. You can define Session API checkpoints using the AWS SDK. You can download the bot schema for the conversation in this post to implement a quick application. For more information, see the Amazon Lex documentation.
About the Author
Shahab Shekari works as a Software Development Engineer at Amazon AI. He works on scalable distributed systems and enhancing Lex user experiences. Outside of work, he can be found traveling and enjoying the Pacific Northwest with his dogs, friends and family.