Saltearse al contenido

Request Approval

Request Approval es una herramienta para tus agentes. Cuando el agente va a hacer algo importante, como enviar un presupuesto, comprometer dinero o escribir a un cliente, pide permiso antes de actuar. También sirve para esperar a que pase algo fuera, como que un cliente firme un contrato. El agente avisa a quien debe responder, se detiene y no se ejecuta nada ni se consume nada mientras espera, aunque la respuesta tarde minutos o días. Cuando llega la respuesta, el agente sigue justo donde se quedó.

Conéctalo a la entrada Tools de un Agent, un Simple Agent o un Deep Agent. En la paleta está en el grupo Human in the Loop, dentro de los agentes.

Cómo se ve

Este vídeo, con voz, lo explica de principio a fin: cómo se configura el flujo, qué hace el agente al pedir aprobación y las dos formas de responder, desde el menú Aprobaciones de la aplicación o llamando al webhook desde otro sistema.

Paso a paso: Ferretería Central tiene un agente que prepara presupuestos. Antes de enviar uno, pide aprobación y escribe al responsable de ventas con los dos enlaces.

  1. El flujo: el agente tiene conectadas como herramientas Request Approval y Enviar correo.

    Flujo con Chat Input, el agente Asistente comercial, sus herramientas Request Approval y Enviar correo, el modelo de OpenAI y Chat Output

  2. Un cliente pide un presupuesto en el chat del flujo publicado y el agente responde que está pendiente de aprobación.

    Chat con la petición de un presupuesto de 40 taladros para Construcciones Arganda y la respuesta del agente: pendiente de aprobación del responsable de ventas

  3. El correo que el agente escribe al responsable de ventas, con un botón para aprobar y otro para rechazar.

    Correo de ejemplo con el resumen del presupuesto y los botones Aprobar y Rechazar

  4. El responsable pulsa Aprobar en el correo, escribe un comentario y confirma en la página que se abre.

    Página de aprobación con el resumen del presupuesto, el comentario "Adelante, precio validado" y el botón Aprobar

  5. El agente sigue donde se quedó. En Aprobaciones, pestaña Historial, la petición aparece como Aprobada (enlace) junto con la respuesta final del agente.

    Historial de Aprobaciones con la petición de Construcciones Arganda aprobada desde el enlace y el resultado "Presupuesto enviado a Construcciones Arganda"

Cuándo usarlo

  • Un agente comercial prepara presupuestos y un responsable debe dar el visto bueno a los que superan cierto importe.
  • Un agente de compras propone pedidos a proveedores y finanzas los aprueba antes de enviarlos.
  • Un agente prepara un contrato y debe esperar a que el cliente lo firme con un servicio de firma electrónica antes de dar de alta el servicio.
  • Un agente que borra o cambia datos en tus sistemas pide permiso antes de cualquier acción que no se pueda deshacer.
  • Otro sistema de tu empresa, o otro flujo, debe dar el visto bueno antes de que el agente continúe.

Configuración

CampoQué hace
When to AskLe dice al agente cuándo debe pedir aprobación, por ejemplo “Antes de enviar cualquier presupuesto de más de 1.000 EUR”, o qué debe esperar, por ejemplo “Hasta que el cliente firme el contrato”. Por defecto: Before any action that commits money, sends something to a customer or cannot be undone.
Who ApprovesOpcional. Quién o qué responde, por ejemplo “Director comercial” o “Servicio de firma electrónica”. Se muestra junto a la petición.

Avanzado

CampoQué hace
Deadline (hours)Cuánto tiempo puede esperar la petición una respuesta. Por defecto: 72. Con 0 no caduca nunca.
If Nobody AnswersQué ocurre cuando se acaba el plazo sin respuesta. Reject (por defecto): el agente lo toma como un rechazo y sigue. Approve: lo toma como aprobado y sigue. Leave it expired: la petición se cierra como caducada y el agente se queda detenido.

Qué recibe el agente al pedir aprobación

Cuando llega el momento indicado en When to Ask, el agente escribe un resumen de lo que quiere hacer con los datos clave y, si hace falta, los detalles: el borrador, las cifras o sus motivos. Como respuesta, recibe los datos de su petición:

{
"status": "pending_approval",
"pause_id": "…",
"title": "Presupuesto para ACME: 3 licencias, 12.000 EUR",
"summary": "…",
"details": "…",
"approver": "Director comercial",
"approve_url": "https://<tu dirección de NappAI>/api/v1/pause_resume/<código>?decision=approve",
"reject_url": "https://<tu dirección de NappAI>/api/v1/pause_resume/<código>?decision=reject",
"how_to_answer": "Both URLs are webhooks: a POST to approve_url or reject_url answers (optional JSON body: {\"message\": \"comment\", \"data\": {...}}). Opened in a browser, they show a page with that button to confirm.",
"expires_at": "…",
"next_step": "…"
}
  • approve_url y reject_url: un enlace para aprobar y otro para rechazar. Los dos son también webhooks: cualquier sistema responde enviando una petición POST a uno de ellos. Abiertos en el navegador, muestran una página para confirmar.
  • how_to_answer: cómo se responde, explicado para el agente.
  • expires_at: cuándo acaba el plazo.
  • next_step: lo que el agente debe hacer ahora: avisar a quien responde y esperar.

Con estos datos, el agente avisa a quien debe responder usando sus otras herramientas. Por ejemplo:

  • Envía por correo los dos enlaces al responsable, con Gmail Message, Outlook u otra herramienta de correo.
  • Los manda por Slack o Teams.
  • Da approve_url y reject_url a un servicio externo, como uno de firma electrónica o de pagos, como direcciones de aviso: approve_url para cuando todo va bien y reject_url para cuando no.
  • Pasa los datos a una herramienta Python Code para hacer con ellos lo que necesites.

Después el agente termina su turno y se queda detenido, sin ejecutar nada, hasta que alguien responda.

La respuesta de la llamada a la API que ejecutó el flujo incluye también un apartado pause con el identificador de la petición, su título, la dirección para responderla y cuándo caduca.

Cómo responder

Una petición se puede responder de cuatro formas:

  1. Como webhook. Cualquier sistema o flujo puede enviar una petición POST a approve_url para aprobar o a reject_url para rechazar. No necesita nada más. Si quiere, puede añadir en el cuerpo un comentario en message y, en data, cualquier dato que acompañe la respuesta, por ejemplo quién firmó y cuándo: {"message": "Firmado", "data": {"firmante": "Laura Gómez"}}. El agente recibe esos datos.
  2. Abriendo approve_url o reject_url en el navegador. Aparece una página con la petición, un cuadro para dejar un comentario y un único botón para confirmar esa decisión. No hace falta entrar en NappAI. Abrir el enlace no responde por sí solo, porque algunos programas de correo abren los enlaces automáticamente.
  3. En la bandeja Aprobaciones del dashboard, en Monitoreo. Ver Aprobaciones.
  4. En la conversación. Si el usuario sigue hablando con el agente, puede responder en el chat.

Cuando llega la respuesta, el agente sigue justo donde se quedó. Si se aprueba, recibe quién aprobó, el comentario y los datos que acompañen la respuesta, y termina su trabajo. Si se rechaza, recibe el motivo, no hace esa acción y se lo dice al usuario.

Solo cuenta la primera respuesta. Si alguien intenta responder de nuevo, recibe un aviso de que ya está respondida. Si nadie responde antes del plazo, se aplica lo indicado en If Nobody Answers.

Resultado

  • Tool: la herramienta, para conectarla a la entrada Tools de un agente.

Ejemplos

Aprobación por correo

La empresa de reformas Obras Ribera tiene un agente que prepara presupuestos a partir de las peticiones de su web. Le conecta Request Approval y Gmail Message como herramientas, con When to Ask “Antes de enviar cualquier presupuesto de más de 5.000 EUR” y Who Approves “Jefa de obra”. En las instrucciones del agente escribe: “Antes de enviar un presupuesto, pide aprobación y envía por correo los dos enlaces a la jefa de obra”.

Cuando un cliente pide una reforma de cocina de 8.200 EUR, el agente pide aprobación, envía el correo con los enlaces y se detiene. La jefa de obra abre el enlace de aprobar al día siguiente, escribe el comentario “Añade un 5 % de descuento por pronto pago” y confirma. El agente sigue y envía el presupuesto con el descuento.

Esperar una firma electrónica

Un agente de altas prepara el contrato de un cliente nuevo. Tiene Request Approval con When to Ask “Hasta que el cliente firme el contrato” y Who Approves “Servicio de firma electrónica”. El agente pide aprobación y envía el contrato al servicio de firma con dos direcciones de aviso: approve_url para cuando el cliente firme y reject_url para cuando lo rechace. Cuando el cliente firma, el servicio llama a approve_url con quién firmó y cuándo en data. El agente sigue con esos datos y da de alta al cliente. Si el cliente rechaza el contrato, el servicio llama a reject_url y el agente no lo da de alta.

Otro sistema responde

Un flujo de control de crédito revisa cada pedido grande. Cuando el agente de pedidos pide aprobación, envía approve_url y reject_url a ese flujo. El flujo comprueba el crédito del cliente y, según el resultado, hace una petición POST a uno de los dos enlaces. El agente de pedidos continúa en cuanto llega la respuesta.

Buenas prácticas

  • Escribe en When to Ask situaciones concretas, con importes o tipos de acción. Cuanto más claro, mejor sabe el agente cuándo preguntar.
  • Di en las instrucciones del agente a quién y por dónde debe enviar los enlaces, y conéctale la herramienta para hacerlo.
  • Pon también qué debe hacer si se rechaza, por ejemplo avisar al cliente de que alguien le llamará.
  • El agente necesita memoria para poder detenerse: al conectar Request Approval, Use memory se activa solo.

Componentes relacionados

  • Aprobaciones: la bandeja donde ves y respondes las peticiones.
  • Agent: con Human-in-the-Loop puedes pedir aprobación antes de usar herramientas concretas.