How to store chat-conversation of chatbot(in aws lex) in DynamoDB

2.1k views Asked by At

I am building a chatbot for a website that has lots of traffic

I decided to build chatbot in AWS lex

I want to save all chat conversation an single attribute in Dynamo DB for that I had chosen list data type for that attribute

and I am able to get all the slot data into different variables but how to save user entered utterance and prompts that we defined in lex console and how to arrange them like a conversation.

If is there any alternative for storing chat conversation?

1

There are 1 answers

1
Saurabh On

Since it's your bot, you know the session timeout value. In your lambda function you can generate a session id (random UUID) and put that in session attribute (read more here). You can create a DDB table in your account and design it like this:

  • Hash Key: userId
  • Range Key: sessionId#timeStamp
  • Request (String attribute): JSON format of request structure that is sent to Lambda function

Now as long as the session is valid you can always retrieve the sessionId that you put in session attributes map. Using this you will always be able to create the range key (sessionId + "#" + currentTimeStamp). In every call that you get in your lambda you also get the user-id for your bot. You can all this information to store the utterances the way you might like.