# Developer Interview Assignment: WebexGPT Chat Bot 🤖
## Assignment #1: Webex Integration and Bot Development
## Instructions 📝
Create a prototype of the WebexGPT Chat Bot, which meets the functional and non-functional requirements.
The prototype should be implemented using the following technologies:
* The Cisco Webex APIs for bot integration
* OpenAI GPT 3.5turbo APIs
* A web-based application framework (e.g., React, SpringBoot etc.)
* A database (e.g., AuroraDB, etc.)
The prototype should be hosted on the AWS platform, and configurations should be made available to an Admin through a web browser that should be responsive.
## Objective 🎯
The objective of this assignment is to implement the Webex integration and bot components of the WebexGPT Chat Bot. You are required to develop the necessary functionality to send and receive messages within Webex using Cisco Webex APIs, generate responses using the ChatGPT API, and build a user-friendly WebUI for admin configuration.
## Requirements 📝
### Webex Bot Integration 🤖
* It must be able to send and receive messages within Webex using Cisco Webex APIs.
* It must be able to generate responses to user messages using the ChatGPT API.
* Implement user authentication and permission controls for secure bot interactions.
### WebUI 💻
Develop a user-friendly WebUI with the following features:
- Bot Configuration section: Allow admins to set API Credentials, Bot Name, and related settings.
- Conversation log: Display a log of all conversations, including the date and time of each conversation, the messages sent by both the user and ChatGPT, and the responses generated by ChatGPT.
- Search functionality: Provide the ability to search the conversation log based on date, keyword, or other criteria. 🔍
## Proposed flow
Here is the expected API flow of the product
```mermaid
sequenceDiagram
participant User
participant WebexBot
participant WebexAPI
participant OpenAIAPI
participant WebUI
participant Database
User->>WebexBot: Sends message to bot
WebexBot->>WebexAPI: Relays message
WebexAPI->>OpenAIAPI: Sends message to GPT
OpenAIAPI->>WebexAPI: Returns GPT's response
WebexAPI->>WebexBot: Relays GPT's response
WebexBot->>User: Sends GPT's response
WebexBot->>WebUI: Logs conversation
WebUI->>Database: Stores conversation details
Database-->>WebUI: Confirmation
```
### Relevant API Docs
- Cisco
- https://developer.webex.com/docs/api/v1/messages/create-a-message
- OpenAI
- https://platform.openai.com/docs/api-reference/introduction
## Guidelines 📌
- Ensure your code follows best practices, including proper code organization, documentation, and error handling.
- Use appropriate design patterns and principles to make your code modular and maintainable.
- Provide clear instructions on how to set up and run your application.
- Feel free to make any reasonable assumptions if certain details are not specified in the requirements.
## Grading ✅
Your assignment will be evaluated based on the following criteria:
1. **Functionality** - Does your solution meet the specified requirements?
2. **Code Quality** - Is your code well-organized, readable, and maintainable?
3. **User Experience** - Does the WebUI provide a user-friendly experience with the requested features?
4. **Error Handling** - Have you implemented appropriate error handling mechanisms?
5. **Documentation** - Have you provided clear instructions on how to set up and run your application?
## Submission 📨
Please submit the following:
1. Source code of your implementation.
2. Any necessary instructions, setup steps, and dependencies.
3. Optionally, provide a brief summary or explanation of your approach and design choices.
## Questions❓
If you have any questions, please do not hesitate to contact me via Whatsapp: https://wa.me/+17036089795 📲
I look forward to seeing your prototype 🚀