from flask import Flask, request from twilio.twiml.messaging_response import MessagingResponse app = Flask(__name__) # Simulación de una "base de datos" de cursos courses = [ {"id": 1, "name": "🐍 Python desde cero", "description": "Aprende a programar con Python, ideal si estás comenzando.", "price": "$50"}, {"id": 2, "name": "🌐 Desarrollo Web con Flask", "description": "Crea sitios y APIs usando Flask y HTML.", "price": "$75"}, {"id": 3, "name": "🧠 Introducción a la Inteligencia Artificial", "description": "Conoce cómo funciona la IA y sus aplicaciones.", "price": "$100"}, ] # Funciones auxiliares def is_affirmative(msg): keywords = ["sí", "si", "claro", "dale", "quiero", "me interesa", "por supuesto", "afirmativo"] return any(k in msg for k in keywords) def is_negative(msg): keywords = ["no", "nunca", "tal vez luego", "no quiero", "gracias pero no"] return any(k in msg for k in keywords) @app.route("/webhook", methods=["POST"]) def webhook(): incoming_msg = request.form.get("Body", "").lower().strip() resp = MessagingResponse() msg = resp.message() # Flujo inicial de bienvenida if any(word in incoming_msg for word in ["hola", "buenas", "hey", "qué tal"]): msg.body( "👋 ¡Hola! Bienvenido a *Academia Virtual*.\n\n¿Quieres que te recomiende algunos cursos? 🤓📚. Escribe cursos") # Solicitud de cursos elif any(word in incoming_msg for word in ["cursos", "ver", "ver cursos", "enséñame", "mostrar", "mostrar cursos"]): response = "📚 *Aquí tienes nuestros cursos disponibles:*\n\n" for c in courses: response += f"{c['id']}. {c['name']}\n💡 {c['description']}\n💵 Precio: {c['price']}\n\n" response += "Escribe el *número* del curso que te interesa para más info ✨ o escribe 'salir' para terminar." msg.body(response) # Selección de curso por número elif incoming_msg.isdigit(): course_id = int(incoming_msg) if 1 <= course_id <= len(courses): c = courses[course_id - 1] msg.body( f"👌 Has elegido el curso *{c['name']}*.\n\n📘 {c['description']}\n💰 Costo: {c['price']}\n\n¿Quieres inscribirte ahora? 📝") else: msg.body( "😅 Ese número no corresponde a ningún curso. Intenta otra vez o escribe 'ver cursos'.") # Inscripción afirmativa elif is_affirmative(incoming_msg): msg.body("🎉 ¡Genial! Te inscribiremos al curso seleccionado. Llena tus datos en el siguiente formulario 🙌.") # Inscripción negativa elif is_negative(incoming_msg): msg.body( "👌 No hay problema. Si más adelante te interesa algún curso, aquí estaré para ayudarte 🤗.") # Salir del flujo elif "salir" in incoming_msg: msg.body( "👋 ¡Gracias por visitarnos! Si tienes más dudas, puedes escribirme cuando quieras. ¡Éxitos! 🚀") # Mensaje por defecto else: msg.body( "🤔 No entendí eso. Puedes decir 'ver cursos' para ver la lista de opciones, o saludarme con un 'hola' 👋.") return str(resp) if __name__ == "__main__": app.run(debug=True)