This project demonstrates an end-to-end serverless application that utilizes AWS Lambda, Amazon Lex, Amazon SQS, Amazon OpenSearch, DynamoDB, and Amazon SNS to provide dining suggestions based on users' preferences.
- Users interact with the Amazon Lex chatbot via a text-based interface.
- The Lambda function processes user input and responds accordingly, handling intents like greetings, thank yous, and dining suggestions.
- For dining suggestions, the Lambda function stores the user's preferences in an Amazon SQS queue.
- Another Lambda function processes the SQS queue, searches for matching restaurants using Amazon OpenSearch, and sends a recommended restaurant to the user via an Amazon SNS message.
- AWS account with access to Lambda, Lex, SQS, OpenSearch, DynamoDB, and SNS
- Python 3.x
- AWS CLI
- AWS SAM CLI (Serverless Application Model)
- Yelp dataset stored in DynamoDB (with restaurants indexed in Amazon OpenSearch)
git clone https://github.com/yourusername/dining-suggestion-chatbot.git
cd dining-suggestion-chatbot
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
aws configure
Follow the Amazon Lex documentation to create a chatbot with the intents and slots used in the Lambda functions.
Use the AWS SAM CLI to package and deploy the Lambda functions.
sam build
sam deploy --guided
Update the Amazon Lex chatbot to use the deployed Lambda function for processing intents.
Create an Amazon SQS queue to store user preferences for dining suggestions. Update the Lambda functions with the appropriate queue URL.
Ensure the Yelp dataset is stored in DynamoDB and indexed in Amazon OpenSearch. Update the Lambda functions with the appropriate OpenSearch and DynamoDB configurations.
Interact with the Amazon Lex chatbot via the text-based interface. The chatbot will respond to greetings, thank yous, and provide dining suggestions based on user preferences.
This project is licensed under the MIT License. See the LICENSE file for details.