> ## Documentation Index
> Fetch the complete documentation index at: https://support.callin.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Herramientas

> Crea herramientas (webhooks) en Callin y úsalas desde el campo Conversation Prompt de tu agente para enviar o consultar datos en tiempo real durante una llamada.

## Visión general

Las **herramientas** (webhooks) permiten que tu agente de Callin se conecte con sistemas externos **en tiempo real** mientras conversa con un usuario.

Dicho de forma simple: una herramienta es una **acción automática** que el agente ejecuta para **preguntar** o **enviar** información a otro sistema (por ejemplo, tu CRM) sin cortar la conversación.

Con una herramienta, tu agente puede:

* **Enviar datos** que el usuario dicta durante la llamada (por ejemplo: nombre, email, teléfono, motivo).
* **Consultar datos** en un sistema externo (por ejemplo: estado, disponibilidad, verificación).
* **Activar automatizaciones** en plataformas externas (CRM, tickets, mensajería, flujos, etc.).

En Callin, el funcionamiento correcto siempre sigue este orden:

1. **Crear la herramienta** en la sección **Tools**.
2. **Asignar la herramienta** al agente en **AI Agents**.
3. **Indicar en el campo Conversation Prompt** cuándo debe ejecutarse y qué debe hacer el agente con el resultado.

Si falta cualquiera de estos 3 pasos, la herramienta no se ejecutará como esperas.

***

## Antes de empezar (conceptos en 60 segundos)

* **Tool / Herramienta**: conexión para que el agente pueda “hablar” con otro sistema (por ejemplo, un CRM).
* **URL**: la dirección a la que Callin envía la solicitud.
* **GET**: se usa para **consultar** información (“¿existe este contacto?”).
* **POST**: se usa para **enviar** información (“crea este lead con estos datos”).
* **Body parameters**: los **datos** que el agente enviará (email, teléfono, nombre, etc.).
* **Required**: campos **obligatorios**. Si falta uno, el resultado será incompleto o el flujo puede fallar.

> Si tu usuario no es técnico, quédate con esta idea: **la herramienta hace la conexión**, y el **Conversation Prompt decide cuándo se usa y con qué datos**.

***

## Paso 1 — Crear una herramienta (webhook)

Para crear una herramienta en Callin:

1. Entra en **Tools** dentro del panel de Callin.
2. Haz clic en **+ Add Tool**.
3. Completa los campos principales:

* **Name**\
  Usa un nombre corto, claro y estable. Recomendación: **verbo + objetivo**.\
  Ejemplos: `consultar-contacto-crm`, `crear-lead-crm`, `enviar-enlace-registro`.
* **Description**\
  Explica **para qué sirve** y, sobre todo, **cuándo debe usarse** (en qué momento de la llamada).\
  Ejemplo: “Consultar si el contacto existe en el CRM solo después de confirmar email y teléfono.”
* **Method**
  * Usa **GET** si vas a **consultar** información.
  * Usa **POST** si vas a **enviar** información (lo más habitual cuando el agente recopila datos y los envía).
* **URL**\
  Pega la URL HTTPS de tu API o el webhook de tu plataforma externa.

> Asegúrate de que la URL sea **HTTPS** y accesible públicamente. Si el endpoint no es accesible, la herramienta no funcionará.

### Configurar “Body parameters” (si usas POST)

Si tu herramienta envía información (POST), define exactamente qué datos enviará:

1. Ve a **Body parameters**.
2. Haz clic en **Add property**.
3. Configura cada campo:

* **Type**: el tipo de dato (texto, número, verdadero/falso, etc.).
* **Identifier**: el nombre exacto del campo que espera tu endpoint (por ejemplo: `email`, `telefono`, `nombre_completo`).
* **Required**: actívalo si el campo es obligatorio.
* **Description**: explica qué representa el campo y el formato esperado (por ejemplo: “Teléfono en formato internacional” o “Email válido”).

> Recomendación práctica: si marcas un campo como **Required**, tu agente debe estar obligado (por instrucciones en el Conversation Prompt) a **pedirlo y confirmarlo** antes de ejecutar la herramienta. Si no, el webhook recibirá datos incompletos o el flujo fallará.

### Encabezados y autenticación (si aplica)

Si tu endpoint requiere autenticación (por ejemplo, un token o una clave), deberás configurarlo siguiendo los requisitos exactos de tu API (qué encabezados necesita y con qué valores).

4. Haz clic en **Save** para guardar la herramienta.

***

## Paso 2 — Asignar la herramienta a un agente

Crear la herramienta no es suficiente. Debes asignarla al agente:

1. Ve a **AI Agents**.
2. Selecciona el agente que vas a configurar.
3. En el editor del agente, baja a la sección **Tools**.
4. Haz clic en **+ Add Tool**.
5. Selecciona la herramienta y guarda.

**Comprobación rápida:**\
Si la herramienta aparece listada en el agente, está asignada correctamente. Si no aparece, el agente no podrá ejecutarla.

***

## Paso 3 — Indicar cómo usar la herramienta en “Conversation Prompt”

Este es el paso más importante. El agente solo ejecutará la herramienta si el **Conversation Prompt** le deja claro:

* **Qué datos debe recopilar** antes de ejecutarla (campos obligatorios).
* **Cómo confirmar esos datos** (para reducir errores).
* **Cuándo** debe ejecutarla (momento exacto de la llamada).
* **Qué debe decir justo después** de ejecutarla (incluyendo frases exactas si tu proceso lo requiere).
* **Qué NO debe hacer** (para evitar mezclar flujos o actuar demasiado pronto).

### Regla clave (para usuarios no técnicos)

Si tú no le dices al agente **“cuándo”** y **“bajo qué condiciones”** usar la herramienta, el agente puede:

* usarla demasiado pronto,
* usarla con datos incompletos,
* o no usarla nunca.

***

## Ejemplo 1 — Conectar con un CRM en tiempo real (consulta + creación)

Este ejemplo está pensado para un caso muy común: el agente habla con un usuario y, **antes de continuar**, comprueba en el CRM si ya existe. Si no existe, lo crea como lead y sigue la llamada.

### Herramientas usadas en este ejemplo

**Herramienta 1: Consultar\_Contacto\_CRM**\
**Objetivo:** comprobar si el contacto ya existe en el CRM.\
**Cuándo se usa:** justo después de confirmar **email + teléfono**.\
**Resultado esperado:** “encontrado / no encontrado” y, si está encontrado, datos básicos (por ejemplo: nombre y estado).

**Herramienta 2: Crear\_Lead\_CRM**\
**Objetivo:** crear un lead si el contacto no existe.\
**Cuándo se usa:** solo si la consulta anterior devuelve “no encontrado”.\
**Datos mínimos recomendados:** nombre, email, teléfono, motivo.

### Condiciones para ejecutar las herramientas (muy importante)

* El agente **no puede** ejecutar ninguna herramienta hasta que:
  * el **email** esté confirmado (repetido y confirmado por el usuario),
  * y el **teléfono** esté confirmado (repetido y confirmado por el usuario).
* Si el usuario duda o corrige un dato, el agente debe **actualizarlo y volver a confirmarlo** antes de continuar.

### Qué escribir en el Conversation Prompt (texto inventado y fácil de adaptar)

**Objetivo del flujo:**\\

1. Recoger datos básicos → 2) Confirmarlos → 3) Consultar CRM → 4) Si no existe, crear lead → 5) Continuar con la conversación.

**Instrucciones claras para el agente (ejemplo):**

* Durante la llamada, recopila y confirma estos datos:
  * **Nombre y apellido**
  * **Email**
  * **Teléfono**
  * **Motivo** (una frase corta)
* Para confirmar:
  * Repite el email y pregunta: “¿Es correcto?”
  * Repite el teléfono y pregunta: “¿Es correcto?”
* Solo cuando email y teléfono estén confirmados:
  * Ejecuta **Consultar\_Contacto\_CRM**.
* Si el resultado indica que el contacto **existe**:
  * Dile al usuario: “Perfecto, ya veo tu ficha registrada. Vamos a continuar.”
  * No inventes detalles. Si el estado viene en el resultado, puedes mencionarlo de forma neutral.
* Si el resultado indica que el contacto **no existe**:
  * Dile al usuario: “Perfecto, no te encuentro todavía. Te registro ahora y seguimos.”
  * Ejecuta **Crear\_Lead\_CRM** con los datos confirmados.
  * Después de crear, confirma: “Listo, ya estás registrado. Continuemos con el siguiente paso.”
* Si la herramienta falla o no devuelve respuesta:
  * No digas información técnica.
  * Di: “No he podido comprobarlo ahora mismo. Vamos a continuar, y si hace falta lo revisamos al final.”
  * No repitas herramientas en bucle.

### Cómo se vería en una llamada (ejemplo de conversación)

**Agente:** “Perfecto. Para ayudarte, necesito unos datos rápidos. ¿Cuál es tu nombre y apellido?”\
**Usuario:** “Laura Martín.”\
**Agente:** “Gracias, Laura. ¿Cuál es tu email?”\
**Usuario:** “[laura.martin@ejemplo.com](mailto:laura.martin@ejemplo.com)”\
**Agente:** “Perfecto. He entendido: laura punto martin arroba ejemplo punto com. ¿Es correcto?”\
**Usuario:** “Sí.”\
**Agente:** “Genial. ¿Cuál es tu teléfono?”\
**Usuario:** “Seis seis cinco, uno dos tres, cuatro cinco seis.”\
**Agente:** “Perfecto. Confirmo el teléfono: 665 123 456. ¿Es correcto?”\
**Usuario:** “Sí.”\
**Agente:** “Gracias. Un último dato: en una frase, ¿cuál es el motivo de tu llamada?”\
**Usuario:** “Quiero información sobre los planes.”\
**Agente:** “Perfecto. Voy a comprobar si ya estás registrada y seguimos.”

(El agente ejecuta **Consultar\_Contacto\_CRM**)

* **Si existe:**\
  **Agente:** “Perfecto, ya veo tu ficha registrada. Vamos a continuar con la información sobre planes.”
* **Si no existe:**\
  **Agente:** “Perfecto, no te encuentro todavía. Te registro ahora y seguimos.”

(El agente ejecuta **Crear\_Lead\_CRM**)

**Agente:** “Listo, ya estás registrada. Ahora sí, vamos con la información sobre planes.”

### Reglas de seguridad del flujo (para evitar errores)

* No ejecutes herramientas con datos sin confirmar.
* No inventes resultados del CRM: solo usa lo que llegue como respuesta.
* No repitas la herramienta varias veces si falla: continúa y ofrece revisarlo después.
* No mezcles flujos: primero CRM (verificar/crear) y luego el resto del proceso.

***

## Ejemplo 2 — Enviar enlaces en el momento correcto (durante la llamada y al final)

A continuación tienes un ejemplo completo (inventado) con dos herramientas: un enlace principal durante la llamada y un enlace de acceso al final.

**Herramienta 1: Enviar\_Enlace\_Registro (Enlace A)**\
**Objetivo:** enviar el enlace principal donde el usuario completa todo el proceso principal.\
**Cuándo se usa:** durante la llamada, solo cuando el usuario confirma que quiere continuar y el email + teléfono están confirmados.

**Enlace A completa (dentro del propio enlace):**

1. Registro inicial (datos obligatorios)
2. Verificación/confirmación de información
3. Selección de plan u opción
4. Configuración de pago (si aplica)
5. Aceptación de términos o firma (si aplica)
6. Carga de documentación (si aplica)
7. Confirmación final

**Condiciones para ejecutar “Enviar\_Enlace\_Registro”:**

* El usuario dice claramente que quiere continuar.
* El email está confirmado (repetido y confirmado por el usuario).
* El teléfono está confirmado (repetido y confirmado por el usuario).

**Frase exacta después de enviar Enlace A (ejemplo inventado):**

> “Abre el enlace que te acabamos de enviar y baja hasta la sección ‘Registro inicial’. Completa tus datos y dime cuando estés listo para continuar.”

**Reglas durante la llamada (muy importante):**

* No le pidas al usuario que salga del Enlace A para hacer pasos en otro sitio durante la llamada.
* No le pidas iniciar sesión en un portal separado mientras está completando el proceso principal.
* Guía al usuario paso a paso, siempre en el punto en el que se encuentre.

***

**Herramienta 2: Enviar\_Enlace\_Portal (Enlace B)**\
**Objetivo:** enviar el enlace de acceso al portal seguro para revisar el progreso más tarde.\
**Cuándo se usa:** únicamente al final de la llamada.

**Frases exactas después de enviar Enlace B (ejemplo inventado):**

> “Aquí tienes el enlace para entrar a tu portal seguro.”\
> “También te enviamos correos con tus datos de acceso.”\
> “Si no los encuentras, usa el buscador del email y escribe el nombre de nuestra empresa para localizarlos.”

**Cierre final (ejemplo inventado):**

> “Gracias por tu tiempo. Si necesitas ayuda con cualquier paso, estamos disponibles para asistirte.”

***

## Paso 4 — Probar la herramienta antes de usarla en producción

Antes de usar la herramienta con clientes, valida que:

* La petición se ejecuta correctamente.
* Los campos llegan con el nombre esperado (Identifier).
* Los campos obligatorios (Required) están siempre presentes.
* El endpoint responde de forma rápida y consistente.

Una buena práctica es probar el webhook con una URL de inspección temporal (para ver qué llega) y luego con tu endpoint real.

### Checklist rápida (30 segundos)

* La herramienta está creada y guardada en **Tools**.
* La herramienta está asignada al agente en **AI Agents > tu agente > Tools**.
* El **Conversation Prompt** indica claramente:
  * qué datos pedir,
  * cómo confirmarlos,
  * cuándo ejecutar la herramienta,
  * y qué decir justo después.

***

## Errores comunes y cómo solucionarlos

| Problema                            | Causa probable                                                    | Solución                                                                                         |
| ----------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| La herramienta no se ejecuta        | No está asignada al agente                                        | Ve a **AI Agents > tu agente > Tools** y añádela                                                 |
| No llega información al endpoint    | Endpoint inaccesible o URL incorrecta                             | Verifica que la URL sea **HTTPS** y accesible públicamente                                       |
| Faltan campos                       | “Identifier / Required” mal definidos o el agente no los recopila | Revisa **Body parameters** y ajusta el **Conversation Prompt** para exigir y confirmar los datos |
| Se ejecuta en el momento equivocado | El Conversation Prompt no define condiciones claras               | Especifica reglas del tipo “solo al final”, “solo tras confirmar email y teléfono”               |

***

## Consejo final

Para conseguir un resultado estable:

* Empieza con una herramienta simple.
* Define pocos campos obligatorios al inicio.
* En el Conversation Prompt, sé explícito con:
  * **condiciones de ejecución**,
  * **orden del flujo**,
  * **frases exactas** (si aplican),
  * **y prohibiciones** (qué no debe hacer el agente).
