File size: 2,738 Bytes
bc2c36b
9b1b1fc
 
11c7767
bc2c36b
 
 
 
12b5ed5
 
 
e807ee5
11c7767
 
12b5ed5
e807ee5
9b1b1fc
eccd759
2110bf1
9b1b1fc
 
 
 
 
 
 
4f2e9a5
9b1b1fc
 
 
4f2e9a5
9b1b1fc
 
 
 
 
 
4f2e9a5
9b1b1fc
12b5ed5
a73f742
12b5ed5
a73f742
9b1b1fc
 
bc2c36b
a73f742
bc2c36b
 
 
 
 
9b1b1fc
 
bc2c36b
9b1b1fc
bc2c36b
1386c15
9b1b1fc
6ca45ef
 
666359d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import gradio as gr
import comunicacion_gmail
import json
from urllib.parse import urlparse, parse_qs

def gmail_interface(accion, parametros):
    """Funci贸n que llama a gmail_tool y formatea la respuesta."""
    try:
        print(f"Acci贸n recibida: {accion}")  # Depuraci贸n
        print(f"Par谩metros recibidos: {parametros}")  # Depuraci贸n
        
        if parametros and parametros.strip():  # Verificar si parametros NO es una cadena vac铆a
            try:
                parametros = json.loads(parametros) # Convierte la cadena JSON a un diccionario
            except json.JSONDecodeError as e:
               return f"Error al decodificar JSON: " + str(e), ""

           
        resultado = comunicacion_gmail.gmail_tool(accion, parametros)

        # Formatear la respuesta de gmail_tool
        if accion == "leer_correos":
            messages = resultado.get("messages", [])
            formatted_messages = ""
            for message in messages:
                formatted_messages += f"ID: {message['id']}\nCuerpo: {message['body']}\n---\n" # Formateo b谩sico.  Adaptar seg煤n sea necesario.
            return formatted_messages, ""

        elif accion == "enviar_correo":
            message_id = resultado.get("message_id")
            return f"Correo enviado con ID: {message_id}", ""


        elif accion == "verificar_almacenamiento":
            # Formatear la informaci贸n de almacenamiento
            storage = resultado.get("storageQuota", {}) # Manejar el caso donde no hay storageQuota
            formatted_storage = f"L铆mite: {storage.get('limit', 'N/A')}\nUso: {storage.get('usage', 'N/A')}\nEn Drive: {storage.get('usageInDrive', 'N/A')}"
            return formatted_storage, ""
        
        elif "error" in resultado:
            return f"Error en gmail_tool: {resultado['error']}", "" #  Muestra el error de gmail_tool
        else:
            return str(resultado), ""  # Respuesta por defecto


    except Exception as e:
        return f"Error en gmail_interface: {e}", "" 


iface = gr.Interface(
    fn=gmail_interface,
    inputs=[
        gr.Dropdown(["leer_correos", "enviar_correo", "verificar_almacenamiento"], label="Acci贸n", info="Selecciona la acci贸n que quieres realizar con Gmail."),
        gr.Textbox(label="Par谩metros (JSON)", lines=3, info="Introduce los par谩metros en formato JSON (ej. {\"maxResults\": 5})."),
    ],
    outputs=[gr.Textbox(label="Resultado"), gr.HTML(visible=False)], #  A帽ade gr.HTML aunque no se use en este ejemplo
    title="Herramienta de Gmail",
    description="Herramienta para interactuar con Gmail.",
    allow_flagging="never",
)

iface.queue().launch(share=True) #  A帽ade concurrency_count para manejar m煤ltiples solicitudes