tb1 / app.py
GAS17's picture
Create app.py
3b30627 verified
from fastapi import FastAPI, Request
from twilio.rest import Client
from twilio.twiml.messaging_response import MessagingResponse
import openai
import os
app = FastAPI()
# Configura las claves de API desde las variables de entorno
openai.api_key = os.getenv("OPENAI_API_KEY")
twilio_account_sid = os.getenv("TWILIO_ACCOUNT_SID")
twilio_auth_token = os.getenv("TWILIO_AUTH_TOKEN")
twilio_whatsapp_number = os.getenv("TWILIO_WHATSAPP_NUMBER")
# Inicializa el cliente de Twilio
client = Client(twilio_account_sid, twilio_auth_token)
@app.post("/webhook")
async def whatsapp_webhook(request: Request):
# Extraer el mensaje entrante y el número del remitente desde Twilio
form = await request.form()
incoming_msg = form.get('Body', '').strip()
from_number = form.get('From', '').strip()
# Generar una respuesta usando GPT-4
response_text = get_gpt4_response(incoming_msg)
# Enviar la respuesta de vuelta al usuario en WhatsApp a través de Twilio
client.messages.create(
body=response_text,
from_=twilio_whatsapp_number,
to=from_number
)
# Crear una respuesta TwiML para confirmar la recepción
twilio_resp = MessagingResponse()
twilio_resp.message("Procesando tu mensaje...")
return str(twilio_resp)
def get_gpt4_response(message):
"""
Envía el mensaje del usuario a GPT-4 y devuelve la respuesta generada.
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": message}],
temperature=0.7 # Controla la creatividad de la respuesta
)
return response.choices[0].message['content']
except Exception as e:
print(f"Error con la API de GPT-4: {e}")
return "Lo siento, hubo un problema al procesar tu mensaje. Inténtalo de nuevo más tarde."