#import asyncio
import requests
from agents import Agent, Runner, function_tool,ModelSettings,FileSearchTool
#from langchain_community.utilities import SQLDatabase
#from langchain_openai import ChatOpenAI
from openai import OpenAI
#from langchain.chains import create_sql_query_chain
import os
#import re
#from base64 import b64encode
from dotenv import load_dotenv
#from openai import AssistantEventHandler
from typing import Any
from datetime import datetime
import json
import base64
from PIL import Image
import io
import ast


# Load environment variables
load_dotenv()

# Load API key from environment variable
#api_key = os.environ.get("OPENAI_API_KEY")
api_key = os.getenv("OPENAI_API_KEY")
# Initialize the client with the API key
client = OpenAI(api_key=api_key)

# Create a model settings object and set tool_choice to the name of the desired tool
model_settings = ModelSettings(tool_choice="required")


def get_Token_and_Id(usrEmail:str, usrPass:str):
    url = "https://api.sistemaml.net/app/login"

    # Data to be sent in x-www-form-urlencoded format
    payload = {
        'email': 'user_compratelia',
        'password': '1nt3l14p1$',
        'app_username': usrEmail,
        'app_password': usrPass
    }

    # Set headers to use x-www-form-urlencoded
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded'
    }

    # Send POST request
    response = requests.post(url, data=payload, headers=headers)
    #print(response.text)
    try:
        data = response.json()

        if data.get("success") and "data" in data:
            token = data["data"].get("access_token")
            user_id = data["data"]["user"].get("id")
            return {
                "access_token": token,
                "user_id": user_id,
            }
        else:
            return {
                "error": data.get("message", "Authentication failed.")
            }

    except Exception as e:
        return {
            "error": f"Failed to parse response: {str(e)}"
        }


def prepare_invoice_base64(file_path):
    file_ext = os.path.splitext(file_path)[1].lower()

    # Read and convert the file
    if file_ext == '.pdf':
        with open(file_path, 'rb') as f:
            pdf_bytes = f.read()
    elif file_ext in ['.jpg', '.jpeg', '.png']:
        image = Image.open(file_path).convert("RGB")
        pdf_buffer = io.BytesIO()
        image.save(pdf_buffer, format="PDF")
        pdf_bytes = pdf_buffer.getvalue()
    else:
        raise ValueError("Formato de archivo no soportado. Usa PDF o una imagen (.jpg, .jpeg, .png)")

    # Encode in Base64 and clean up
    pdf_base64 = base64.b64encode(pdf_bytes).decode('utf-8')
    pdf_base64_clean = ''.join(pdf_base64.strip().splitlines())  # Remove any line breaks

    # Optional: Validate the base64
    try:
        os.remove(file_path)
        base64.b64decode(pdf_base64_clean, validate=True)
    except Exception as e:
        raise ValueError("Base64 encoding failed or is invalid") from e

    return pdf_base64_clean








@function_tool
def reset_password(usrEmail:str):
    url = "https://api.sistemaml.net/app/password/email"

    # Data to be sent in x-www-form-urlencoded format
    payload = {
        "email":usrEmail
    }

    # Set headers to use x-www-form-urlencoded
    headers = {
        "Cache-Control": "no-cache",
        "User-Agent": "PostmanRuntime/7.43.4",
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate, br",
        "Connection": "keep-alive",
        "email":"user_compratelia",
        "password":"1nt3l14p1$",
        "Content-Type":"application/x-www-form-urlencoded"
    }
    # Send POST request
    response = requests.post(url, data=payload, headers=headers)
    #print(response.text)
    return str(response)

# @function_tool
# def wait_message():
#     return "Please wait while your request its been processing"

@function_tool
def prealertlist_process(usrEmail: str, usrPass: str):

    creds = get_Token_and_Id(usrEmail, usrPass)
    Access_token = creds["access_token"]
    user_id = creds["user_id"]
    
    #print('from prealerts access token '+Access_token)
    #print('from prealerts user id '+str(user_id))
    
    url = f"https://api.sistemaml.net/app/preAlert/list/{user_id}"

    # Data to be sent in x-www-form-urlencoded format
    headers = {
    "Authorization": f"Bearer {Access_token}",
    "Cache-Control": "no-cache",
    "User-Agent": "PostmanRuntime/7.43.4",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive"
    }

    # Send POST request
    response = requests.get(url,headers=headers)
    response_data = response.json()

    prealerts = []

    for item in response_data.get("data", []):
        prealerts.append({
            "tracking": item.get("tracking", ""),
            "description": item.get("description", ""),
            "price": item.get("price", ""),
            "instructions": item.get("instructions", "")
        })

    # Output JSON
    output = {
        "success": True,
        "message": f"{len(prealerts)} prealertas encontrados.",
        "total": len(prealerts),
        "data": prealerts
    }
    #print(str(output))
    return str(output)

@function_tool
def shsList_process(usrEmail: str, usrPass: str):

    creds = get_Token_and_Id(usrEmail, usrPass)
    Access_token = creds["access_token"]
    user_id = creds["user_id"]
    
    #print('from shsList access token '+Access_token)
    #print('from shsList user id '+str(user_id))

    url = f"https://api.sistemaml.net/app/shs/list/{user_id}"

    # Data to be sent in x-www-form-urlencoded format
    headers = {
    "Authorization": f"Bearer {Access_token}",
    "Cache-Control": "no-cache",
    "User-Agent": "PostmanRuntime/7.43.4",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive"
    }

    # Send POST request
    response = requests.get(url,headers=headers)
    data = response.json()

    # Extracted result list
    result = []

    # Counter for total shsubs
    total_shsubs = 0

    # Loop through each package
    for package in data.get('data', []):
        sh_id = package.get('id', '')
        sh_fecha = package.get('fecha', '')
        sh_status = package.get('status', '')
        sh_libras=package.get('lb', 0)
        sh_pago=package.get('pago_verificar','')
        sh_trackings = package.get('trackings', '')
        sh_wrs = package.get('wrs', [])

        shsubs = package.get('shsubs', [])
        
        if shsubs:
            for shsub in shsubs:
                entry = {
                    'SH#': sh_id,
                    'fecha': sh_fecha,
                    'status': sh_status,
                    'libras':sh_libras,
                    'pago_verificar':sh_pago,
                    'trackings': sh_trackings,
                    'wrs': sh_wrs
                }
                result.append(entry)
                total_shsubs += 1
        else:
            # Treat the package as an SH even if it has no shsubs
            entry = {
                'SH': sh_id,
                'fecha': sh_fecha,
                'status': sh_status,
                'libras':sh_libras,
                'pago_verificar':sh_pago,
                'trackings': sh_trackings,
                'wrs': sh_wrs
            }
            result.append(entry)
            total_shsubs += 1

    # Add total count at the top level
    output = {
        'total_shsubs': total_shsubs,
        'packages': result
    }
    #print(str(output))
    return str(output)

@function_tool
def shsListSent_process(usrEmail: str, usrPass: str):

    creds = get_Token_and_Id(usrEmail, usrPass)
    Access_token = creds["access_token"]
    user_id = creds["user_id"]

    #print('from shsListSent access token '+Access_token)
    #print('from shsListSent user id '+str(user_id))

   
    url = f"https://api.sistemaml.net/app/shs/listSent/{user_id}"

    # Data to be sent in x-www-form-urlencoded format
    headers = {
    "Authorization": f"Bearer {Access_token}",
    "Cache-Control": "no-cache",
    "User-Agent": "PostmanRuntime/7.43.4",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive"
    }

    # Send POST request
    response = requests.get(url,headers=headers)
    #print(response.text)
    data = response.json()

    # Extracted result list
    result = []

    # Counter for total shsubs
    total_shsubs = 0

    # Loop through each package
    for package in data.get('data', []):
        sh_id = package.get('id', '')
        sh_fecha = package.get('fecha', '')
        sh_status = package.get('status', '')
        sh_peso=package.get('lb', 0)
        sh_pago=package.get('pago_verificar','')
        sh_trackings = package.get('trackings', '')
        sh_wrs = package.get('wrs', [])

        shsubs = package.get('shsubs', [])
        
        if shsubs:
            for shsub in shsubs:
                entry = {
                    'SH#': sh_id,
                    'fecha': sh_fecha,
                    'status': sh_status,
                    'libras':sh_peso,
                    'pago_verificar':sh_pago,
                    'trackings': sh_trackings,
                    'wrs': sh_wrs
                }
                result.append(entry)
                total_shsubs += 1
        else:
            # Treat the package as an SH even if it has no shsubs
            entry = {
                'SH': sh_id,
                'fecha': sh_fecha,
                'status': sh_status,
                'libras':sh_peso,
                'pago_verificar':sh_pago,
                'trackings': sh_trackings,
                'wrs': sh_wrs
            }
            result.append(entry)
            total_shsubs += 1

    # Add total count at the top level
    output = {
        'total_shsubs': total_shsubs,
        'packages': result
    }
    #print(str(output))
    return str(output)

@function_tool
def wrsList_process(usrEmail: str, usrPass: str):

    creds = get_Token_and_Id(usrEmail, usrPass)
    Access_token = creds["access_token"]
    user_id = creds["user_id"]

    #print('from wrsList access token '+Access_token)
    #print('from wrsList user id '+str(user_id))
    
    url = f"https://api.sistemaml.net/app/wrs/list/{user_id}"

    # Data to be sent in x-www-form-urlencoded format
    headers = {
    "Authorization": f"Bearer {Access_token}",
    "Cache-Control": "no-cache",
    "User-Agent": "PostmanRuntime/7.43.4",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive"
    }

    # Send POST request
    response = requests.get(url,headers=headers)
    #print(response.text)
    #return str(response)

    # Load JSON
    data = response.json()

    # Extracted result list
    result = []

    # Counter for total wrsubs
    total_wrsubs = 0

    # Loop through each package
    for package in data.get('data', []):
        tracking = package.get('tracking', '')
        WR=package.get('id','')
        verificado=package.get('verificado','')
        for wrsub in package.get('wrsubs', []):
            entry = {
                'tracking': tracking,
                'wr_number':WR,
                'verificado':verificado,
                'contenido': wrsub.get('contenido', ''),
                'tipo': wrsub.get('tipo', ''),
                'libras': wrsub.get('libras', 0)
            }
            result.append(entry)
            total_wrsubs += 1

    # Add total count at the top level
    output = {
        'total_wrsubs': total_wrsubs,
        'packages': result
    }

    #print(str(output))
    return str(output)

@function_tool
def get_credentials(usrEmail:str, usrPass:str):
    url = "https://api.sistemaml.net/app/login"

    # Data to be sent in x-www-form-urlencoded format
    payload = {
        'email': 'user_compratelia',
        'password': '1nt3l14p1$',
        'app_username': usrEmail,
        'app_password': usrPass
    }

    # Set headers to use x-www-form-urlencoded
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded'
    }

    # Send POST request
    response = requests.post(url, data=payload, headers=headers)
    #print(response.text)
    try:
        data = response.json()

        if data.get("success") and "data" in data:
            token = data["data"].get("access_token")
            user_id = data["data"]["user"].get("id")
            agent_id = data["data"]["agent"].get("idR")
            name=data["data"]["user"].get("name")

            return {
                "access_token": token,
                "user_id": user_id,
                "agent_id": agent_id,
                "client_name":name,
                "message": data.get("message", "Login success.")
            }
        else:
            return {
                "error": data.get("message", "Authentication failed.")
            }

    except Exception as e:
        return {
            "error": f"Failed to parse response: {str(e)}"
        }


@function_tool
def createPrealert_proccess(usrEmail: str, usrPass: str,invoicePath: str,track:str,descrip:str,fob:float):

    
    print(usrEmail)
    print(usrPass)
    print(invoicePath)
    print(track)
    print(descrip)
    print(fob)
    
    
    
    
    creds = get_Token_and_Id(usrEmail, usrPass)
    Access_token = creds["access_token"]
    user_id = str(creds["user_id"])
    
    invoice_file_path = invoicePath  # O factura.pdf
    invoice_base64 = prepare_invoice_base64(invoice_file_path)

    json_payload = {
        "consigneeId": user_id,
        "shipper": "Amazon",
        "carrierId": 7,
        "tracking": track,
        "description": descrip,
        "price": fob,
        "instructions": "prueba",
        "invoice": invoice_base64
    }
    
    

    url ="https://api.sistemaml.net/app/preAlert/create"

    # Data to be sent in x-www-form-urlencoded format
    headers = {
    "Authorization": f"Bearer {Access_token}",
    "Cache-Control": "no-cache",
    "User-Agent": "PostmanRuntime/7.44.0",
    "Content-Type":"application/json",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive"
    }

    # Specify the file path
    file_path = "chat_log.json"

    # Save JSON data to file
    with open(file_path, "w", encoding="utf-8") as f:
        json.dump(json_payload, f, ensure_ascii=False, indent=2)

    # Send POST request
    response = requests.post(url,json=json_payload,headers=headers)
    response_data = response.json()

    print(str(response_data))

    #prealerts = []

    if response_data.get("success"):
        output=response_data.get("message")
    else:      
        output=response_data.get("message")
    # Output JSON
    return str(output)




# prealert_agent = Agent(
#     name="Prealerta agent",
#     instructions='''
# Eres un asistente virtual especializado en el manejo de prealertas de paquetes para los clientes de COMPRATELIA.

# ✅ Antes de comenzar cualquier proceso, verifica que el cliente haya sido autenticado correctamente. Deberías tener disponibles en memoria las siguientes variables:
# - [user_id] → Identificador único del cliente.
# - [client_name] → Nombre del cliente.
# - [usrEmail, usrPass] → Credenciales del cliente.

# 📋 FUNCIONALIDADES DISPONIBLES:

# 1. 📄 **Consultar Prealertas Realizadas**:
#    Si el cliente solicita ver sus prealertas anteriores o utiliza frases como:
#    - "ver mis prealertas"
#    - "consultar mis prealertas"
#    - "ya hice una prealerta"
#    - "quiero ver las prealertas"
   
#    Usa la herramienta **prealertlist_process** para obtener la lista de prealertas registradas.

#    → Ejemplo de respuesta:  
#    "Estas son tus prealertas registradas hasta el momento, [client_name]: [mostrar lista con detalles como tracking, descripción, precio]."

# 2. 📦 **Crear una Nueva Prealerta**:
#    Si el cliente dice frases como:
#    - "quiero hacer una prealerta"
#    - "necesito registrar una prealerta"
#    - "Hice una compra y quiero notificarla"
#    - "quiero subir la factura"

#    Solicita al cliente la siguiente información de forma clara y ordenada:
#    - **Número de tracking**
#    - **Descripción del contenido del paquete**
#    - **Precio del paquete (USD)**
#    - **Factura del paquete en formato PDF o imagen**

#    ➕ Una vez que tengas todos los datos, utiliza la herramienta **create_prealert** y envia la siguiente informacion que es extraida de la conversacion:
#    - usrEmail, usrPass ,la direccion del archivo que acaba de enviar,el tracking number o numero de seguimiento,la descripcion del paquete a ser prealertado y el precio del producto o productos.
# ''',
# tools=[prealertlist_process, createPrealert_proccess],
# )





company_agent = Agent(
    name="company agent",
    instructions='''Eres un agente encargado de proveer al TRIAGE AGENT con respuestas a preguntas de los clientes que tengan que ver acerca de datos de la empresa courier como direccion fisica,
    horarios de operacion, servicios y costos, asi como datos de los procedimientos aduanales en Ecuador, materiales prohibido segun la aduana de Ecuador,
    impuestos aplicados segun descripcion del producto''',
        tools=[
            FileSearchTool(
                max_num_results=3,
                vector_store_ids=["vs_6824df08a0f88191b086dc004d6b1c6c"],
                include_search_results=True,
            )
        ],
    )


triage_agent = Agent(
    name="Triage agent",
    instructions='''
    Eres un asistente de atención al cliente de la empresa COMPRATELIA.
    No procedas con ninguna solicitud hasta que el cliente haya sido autenticado.

    🔐 Flujo de Autenticación:
    Pide al cliente su usuario y contraseña para verificar su identidad.
    Ejemplo: "Antes de continuar, ¿podrías proporcionarme tu usuario y contraseña para verificar tu cuenta?"
    Usa la herramienta **get_credentials** con las credenciales proporcionadas.
    Si las credenciales son válidas:
    Guarda en memoria el [nombre del cliente:client_name], el [identificacion de usuario:user_id], y las credenciales [nombre de usuario:usrEmail, password:usrPass] para su uso futuro.
    Dirígete al cliente por su nombre a partir de ese momento.
    Ejemplo: "Gracias, [client_name]. Tus credenciales son válidas. ¿En qué puedo ayudarte hoy?"
    Si las credenciales son inválidas:
    Informa al cliente de manera educada.
    Permite hasta tres intentos.
    Después de 3 fallos, ofrece restablecer la contraseña por correo electrónico:
    Ejemplo: "Parece que has ingresado credenciales incorrectas varias veces. ¿Te gustaría restablecer tu contraseña y recibir una temporal por correo electrónico?"
    Si el cliente acepta, pide su correo electrónico y usa la herramienta **reset_password**.
    Dile al cliente: "Te he enviado una contraseña temporal a tu correo electrónico. Por favor, revisa tu bandeja de entrada y proporciona las nuevas credenciales aquí para verificar tu cuenta."

    ✅ Después de una Autenticación Exitosa:
    Redirige según el tipo de solicitud descrito a continuación.

    📦 Lógica de Enrutamiento y Manejo de Paquetes:
        
    Si el cliente desea:
    Consultar sobre paquetes que ya han sido enviados o el mensaje del cliente incluye palabras como "enviado", "entregado","en transito","ya estan en camino" o equivalentes, usa la herramienta **shsListSent_process** para obtener dicha lista.
    Consultar sobre paquetes que están listos para enviar desde el almacén o el mensaje del cliente incluye palabras como "listo para envio", "aun no enviados","preparados para salir" o equivalentes, usa la herramienta **shsList_process** para obtener dicha lista.
    Consultar sobre paquetes actualmente en el almacén o el mensaje del cliente incluye palabras como "en Miami", "llegados","recibidos en almacen" o equivalentes,usa la herramienta **wrsList_process** para obtener dicha lista.
    
    En el caso de los paquetes actualmente en el almacén (se obtuvieron a traves de la herramienta **wrsList_process** revisar lo siguiente:
    Si verificado es 0 → "El cliente debe proporcionar la factura del paquete."
    Si verificado es 1 → "Esperando a que el cliente solicite el envío."
    
    Si el cliente proporciona un número de seguimiento, tracking number o número WR:
    Consulta las siguientes herramientas 
    **wrsList_process**
    **shsListSent_process** 
    **shsList_process** 
    para obtener las listas de todos los paquetes y busca el número que el cliente dio dentro de cada lista.
    Si se encuentra:
    Proporciona todos los detalles disponibles.
    Solo si aparece en una lista de obtenida de los tools  **shsListSent_process**, aplica:
    status: "ABIERTO" → "El paquete está en proceso de consolidación."
    status: "PROCESADO" y pago_verificar: 0 → "El paquete está esperando pago."
    status: "PROCESADO" y pago_verificar: 1 → "El paquete está en Miami, listo para ser despachado."
    Si no se encuentra:
    Responde: "El número de información que proporcionaste no fue encontrado."
    Sé siempre amable, claro y servicial. Nunca omitas el paso de autenticación.

    
    Tu puedes trabajar con las prealertas como se explica a continuacion:
    1. 📄 **Consultar Prealertas Realizadas**:
   Si el cliente solicita ver sus prealertas anteriores o utiliza frases como:
   - "ver mis prealertas"
   - "consultar mis prealertas"
   - "ya hice una prealerta"
   - "quiero ver las prealertas"
   
   Usa la herramienta **prealertlist_process** para obtener la lista de prealertas registradas.

   → Ejemplo de respuesta:  
   "Estas son tus prealertas registradas hasta el momento, [client_name]: [mostrar lista con detalles como tracking, descripción, precio]."

2. 📦 **Crear una Nueva Prealerta**:
   Si el cliente dice frases como:
   - "quiero hacer una prealerta"
   - "necesito registrar una prealerta"
   - "Hice una compra y quiero notificarla"
   - "quiero subir la factura"

   Solicita al cliente la siguiente información de forma clara y ordenada:
   - **Número de tracking**
   - **Descripción del contenido del paquete**
   - **Precio del paquete (USD)**
   - **Factura del paquete en formato PDF o imagen**

   ➕ Una vez que tengas todos los datos, utiliza la herramienta **create_prealert** y envia la siguiente informacion que es extraida de la conversacion:
   - usrEmail, usrPass ,la direccion del archivo que acaba de enviar,el tracking number o numero de seguimiento,la descripcion del paquete a ser prealertado y el precio del producto o productos.


    
    Si el cliente pregunta por informacion acerca de datos de la empresa courier como direccion fisica,
    horarios de operacion, servicios y costos, asi como datos de los procedimientos aduanales en Ecuador, materiales prohibido segun la aduana de Ecuador,
    impuestos aplicados segun descripcion del producto debes enrutar estos requerimientos al agente  **company_agent**.
    
    No le digas al cliente que lo vas vas a transferir, solo hazlo y espera el resultado.
''',
    handoffs=[company_agent],
    tools=[get_credentials,reset_password,wrsList_process,shsListSent_process,shsList_process,prealertlist_process, createPrealert_proccess],
)

def chat_monitor(input_data, CustomerPhone, respuesta):
    last_msg_id = ""
    last_user_message = ""
    user_id = ""
    phone_number = CustomerPhone

    # Extract last user content
    for item in reversed(input_data):
        if isinstance(item, dict) and item.get("role") == "user":
            last_user_message = item.get("content")
            break

    # Extract last assistant message id
    for item in reversed(input_data):
        if isinstance(item, dict) and item.get("id", "").startswith("msg_"):
            last_msg_id = item.get("id", "")
            break

    # Extract the latest available user_id from any past function_call_output
    for item in reversed(input_data):
        if isinstance(item, dict) and item.get("type") == "function_call_output":
            output = item.get("output", "")
            if isinstance(output, str):
                try:
                    user_data = ast.literal_eval(output)
                    if isinstance(user_data, dict) and "user_id" in user_data:
                        user_id = str(user_data["user_id"])
                        break  # Stop as soon as a valid user_id is found
                except Exception:
                    continue

    # Add timestamp
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    # Output result
    json_payload = {
        "message_id": last_msg_id,
        "user_message": last_user_message,
        "user_id": user_id,
        "assistant_response": respuesta,
        "timestamp": timestamp,
        "phone_number": phone_number
    }

    #print(json_payload)

    url = "https://api.sistemaml.net/login"
    payload = "email="+"user_compratelia"+"&password="+"1nt3l14p1$"
    #payload = "email="+UserName+"&password="+PassWord
    headers = {
    'content-type': "application/x-www-form-urlencoded",
    'cache-control': "no-cache",
    'postman-token': "5b949b74-4434-a3fb-4e91-33f22b22f02c"
    }
    response = requests.request("POST", url, data=payload, headers=headers,timeout=60)
    json_data = response.json()

    # Extract the access token
    access_token = json_data['access_token']
    print(access_token)


    url ="https://api.sistemaml.net/app/whatsaap/create"

    # Data to be sent in x-www-form-urlencoded format
    headers = {
    "Authorization": f"Bearer {access_token}",
    "Cache-Control": "no-cache",
    "User-Agent": "PostmanRuntime/7.44.0",
    "Content-Type":"application/json",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive"
    }

     # Send POST request
    response = requests.post(url,json=json_payload,headers=headers)
    response_data = response.json()
    print(response_data)



# Optional: wrap it in a function
async def run_triage_agent(input_data,CustomerPhone):
    # Log or manipulate the input here
    #print("Triage Agent Input Received in sub_agent_ai.py:")
    #print(input_data)
    #print(CustomerPhone)
    # Call the agent
    respuesta=await Runner.run(triage_agent, input=input_data)
    #print(respuesta)
    chat_monitor(input_data,CustomerPhone,respuesta.final_output)
    return respuesta
    #return await triage_agent.ainvoke(input_list)

