BOT / app.py
IAMRS23's picture
BOT V1
da05bd7 verified
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)