Moibe commited on
Commit
4b2b507
·
1 Parent(s): 882ee29

Primer Commit

Browse files
Files changed (4) hide show
  1. .gitignore +2 -0
  2. Dockerfile +11 -0
  3. requirements.txt +3 -0
  4. webhook.py +68 -0
.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ /venv/
2
+ bridges.py
Dockerfile ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.13
2
+
3
+ WORKDIR /code
4
+
5
+ COPY ./requirements.txt /code/requirements.txt
6
+
7
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
8
+
9
+ COPY . .
10
+
11
+ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8888"]
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ twilio
2
+ fastapi
3
+ uvicorn[standard]
webhook.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, Request
2
+ from twilio.rest import Client
3
+ import bridges
4
+
5
+ # Inicializar FastAPI
6
+ app = FastAPI()
7
+
8
+ # Credenciales de Twilio
9
+ account_sid = 'AC70f4efa275c50cc260b07fa3b1c7e6c5'
10
+ auth_token = bridges.au
11
+ client = Client(account_sid, auth_token)
12
+
13
+ # Número de Twilio para enviar mensajes
14
+ TWILIO_NUMBER = 'whatsapp:+14155238886'
15
+
16
+
17
+ @app.post("/whatsapp")
18
+ async def receive_whatsapp(request: Request):
19
+ """
20
+ Webhook que recibe mensajes de WhatsApp desde Twilio
21
+ """
22
+ # Obtener los datos del formulario que Twilio envía
23
+ form_data = await request.form()
24
+
25
+ # Información del mensaje
26
+ from_number = form_data.get('From') # Número del usuario
27
+ message_body = form_data.get('Body') # Contenido del mensaje
28
+ message_sid = form_data.get('MessageSid') # ID del mensaje
29
+
30
+ # Aquí es donde procesas la respuesta del usuario
31
+ print(f"\n{'='*50}")
32
+ print(f"📱 MENSAJE RECIBIDO")
33
+ print(f"{'='*50}")
34
+ print(f"De: {from_number}")
35
+ print(f"Mensaje: {message_body}")
36
+ print(f"Message SID: {message_sid}")
37
+ print(f"{'='*50}\n")
38
+
39
+ # Ejemplo: Responder según lo que el usuario escribió
40
+ if message_body.lower() == "confirm":
41
+ response_text = "✅ Gracias por confirmar tu cita. Te esperamos!"
42
+ elif message_body.lower() == "reschedule":
43
+ response_text = "📅 Por favor contacta a nuestro equipo para reprogramar."
44
+ else:
45
+ response_text = f"Recibimos tu mensaje: '{message_body}'"
46
+
47
+ # Enviar respuesta automática
48
+ message = client.messages.create(
49
+ from_=TWILIO_NUMBER,
50
+ body=response_text,
51
+ to=from_number
52
+ )
53
+
54
+ print(f"✉️ Respuesta enviada: {response_text}")
55
+
56
+ # Twilio necesita una respuesta vacía para confirmar que recibió el webhook
57
+ return {}
58
+
59
+
60
+ @app.get("/")
61
+ async def root():
62
+ """
63
+ Ruta de prueba para verificar que el servidor está funcionando
64
+ """
65
+ return {"status": "✅ Webhook de Twilio está activo"}
66
+
67
+
68
+ # Para ejecutar: uvicorn webhook:app --reload --host 0.0.0.0 --port 8000