from fastapi import FastAPI, Request from twilio.rest import Client import os # Inicializar FastAPI app = FastAPI() # Credenciales de Twilio account_sid = 'AC70f4efa275c50cc260b07fa3b1c7e6c5' # Leer auth_token: local desde bridges.py, o servidor desde secreto de Hugging Face try: import bridges auth_token = bridges.au except (ImportError, AttributeError): # En servidor (Hugging Face), leer del secreto auth_token = os.getenv('au') if not auth_token: raise ValueError("❌ Error: auth_token no configurado. Revisa que el secreto 'au' esté en Hugging Face o que bridges.py exista localmente.") client = Client(account_sid, auth_token) # Número de Twilio para enviar mensajes TWILIO_NUMBER = 'whatsapp:+14155238886' @app.post("/whatsapp") async def receive_whatsapp(request: Request): """ Webhook que recibe mensajes de WhatsApp desde Twilio """ # Obtener los datos del formulario que Twilio envía form_data = await request.form() # Información del mensaje from_number = form_data.get('From') # Número del usuario message_body = form_data.get('Body') # Contenido del mensaje message_sid = form_data.get('MessageSid') # ID del mensaje # Aquí es donde procesas la respuesta del usuario print(f"\n{'='*50}") print(f"📱 MENSAJE RECIBIDO") print(f"{'='*50}") print(f"De: {from_number}") print(f"Mensaje: {message_body}") print(f"Message SID: {message_sid}") print(f"{'='*50}\n") # Ejemplo: Responder según lo que el usuario escribió if message_body.lower() == "confirm": response_text = "✅ Gracias por confirmar tu cita. Te esperamos!" elif message_body.lower() == "cancel": response_text = "❌ Tu cita ha sido cancelada." else: response_text = f"Recibimos tu mensaje: '{message_body}'" # Enviar respuesta automática message = client.messages.create( from_=TWILIO_NUMBER, body=response_text, to=from_number ) print(f"✉️ Respuesta enviada: {response_text}") # Twilio necesita una respuesta vacía para confirmar que recibió el webhook return {} @app.get("/") async def root(): """ Ruta de prueba para verificar que el servidor está funcionando """ return {"status": "✅ Webhook de Twilio está activo"} # Para ejecutar: uvicorn webhook:app --reload --host 0.0.0.0 --port 8000