From 5453d4eed8267b73822a70ac965412f72900bcf0 Mon Sep 17 00:00:00 2001 From: aserrador Date: Tue, 24 Feb 2026 23:36:44 -0500 Subject: [PATCH] feat: Add schemes --- src/naliiabotapi/api/v1/webhooks/chat_hook.py | 34 ++++++++++++++----- src/naliiabotapi/schemes/__init__.py | 0 src/naliiabotapi/schemes/chat_schemes.py | 10 ++++++ 3 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 src/naliiabotapi/schemes/__init__.py create mode 100644 src/naliiabotapi/schemes/chat_schemes.py diff --git a/src/naliiabotapi/api/v1/webhooks/chat_hook.py b/src/naliiabotapi/api/v1/webhooks/chat_hook.py index 92ef1e0..90905ef 100644 --- a/src/naliiabotapi/api/v1/webhooks/chat_hook.py +++ b/src/naliiabotapi/api/v1/webhooks/chat_hook.py @@ -2,15 +2,24 @@ from fastapi import APIRouter, Depends, Request from langchain.messages import HumanMessage from ...dependencies import get_agent from ....logger import logger +from ....schemes.chat_schemes import SendMessageScheme import httpx import json + router = APIRouter() -async def send_whatsapp_message(instance_url: str, instance_name: str, apikey: str, jid: str, text: str): +async def send_whatsapp_message(request_data: SendMessageScheme): """ Envía un mensaje de texto a través de la API de WhatsApp. """ + instance_url = request_data["instance_url"] + instance_name = request_data["instance_name"] + apikey = request_data["apikey"] + jid = request_data["jid"] + text = request_data["text"] + delay = request_data.get("delay", 1200) + endpoint = f"{instance_url}/message/sendText/{instance_name}" headers = { "apikey": apikey, @@ -20,7 +29,7 @@ async def send_whatsapp_message(instance_url: str, instance_name: str, apikey: s payload = { "number": jid, "text": text, - "delay": 1200, + "delay": delay, "linkPreview": False } @@ -38,11 +47,16 @@ async def send_whatsapp_message(instance_url: str, instance_name: str, apikey: s async def webhook_chat(request: Request, agent = Depends(get_agent)): logger.info("Received webhook request") body = await request.json() + logger.info(f"Webhook payload: {json.dumps(body)}") try: data = body.get("data", {}) key = data.get("key", {}) - + remote_jid = data.get("key", {}).get("remoteJid") + instance_name = body.get("instance") + server_url = body.get("server_url") + api_key = body.get("apikey") + if key.get("fromMe") is True: logger.info("Mensaje enviado por mí (bot), Ignorando.") return {"status": "ignored", "reason": "message_from_me"} @@ -70,12 +84,14 @@ async def webhook_chat(request: Request, agent = Depends(get_agent)): clean_jid = thread_id.split('@')[0] await send_whatsapp_message( - instance_url="http://localhost:8080", - instance_name="ALEJANDRO AYALA", - apikey="98B6B820AFC3-4544-9A4C-011B0719C2D1", - jid=clean_jid, - text=agent_response_content - ) + SendMessageScheme( + instance_url=server_url, + instance_name=instance_name, + apikey=api_key, + jid=clean_jid, + text=agent_response_content, + delay=1200 + )) except Exception as e: logger.error(f"Error processing webhook: {e}") diff --git a/src/naliiabotapi/schemes/__init__.py b/src/naliiabotapi/schemes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/naliiabotapi/schemes/chat_schemes.py b/src/naliiabotapi/schemes/chat_schemes.py new file mode 100644 index 0000000..f77b4f1 --- /dev/null +++ b/src/naliiabotapi/schemes/chat_schemes.py @@ -0,0 +1,10 @@ +from typing import TypedDict + + +class SendMessageScheme(TypedDict): + instance_url: str + instance_name: str + apikey: str + jid: str + delay: int = 1200 + text: str \ No newline at end of file