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

# Habilidades

> Aprende a habilitar, configurar y gestionar las habilidades integradas que tu agente de IA puede usar, como enviar archivos, responder preguntas frecuentes, recopilar información de usuarios y escalar a agentes humanos, a través de los canales soportados.

Administra las habilidades de tu agente de IA a través de dos tipos de herramientas: herramientas predefinidas que vienen integradas con la plataforma y herramientas personalizadas que puedes crear para extender la funcionalidad de tu agente.

<Tabs>
  <Tab title="Herramientas (Predefinidas)">
    La pestaña **Herramientas (Predefinidas)** te permite habilitar o deshabilitar capacidades integradas que tu agente de IA puede usar durante las conversaciones. Cada herramienta representa una función predefinida—como responder preguntas frecuentes, enviar archivos o escalar a un agente humano—que puede activarse o desactivarse según las necesidades de tu negocio.

    Cuando una herramienta está habilitada, puede requerir configuración adicional antes de que el agente pueda usarla exitosamente. Algunas herramientas también dependen del **tipo de canal** donde el usuario final está interactuando (por ejemplo, WhatsApp, Zendesk, Freshchat).

    ***

    ## Cómo Habilitar o Deshabilitar una Herramienta

    1. Navega a **Agente IA > Diseño > Habilidades** en el menú lateral.
    2. En **Herramientas (Predefinidas)**, localiza la herramienta que deseas gestionar.
    3. Usa el **interruptor** para activar o desactivar la herramienta.
    4. Si la herramienta requiere configuración, haz clic en **Configuración**, completa la configuración requerida y guarda los cambios.
    5. Verifica que la herramienta sea compatible con los **canales** a los que tu agente está conectado.

    ***

    ## Herramientas Predefinidas Disponibles

    ### **Enviar Archivos**

    * **Descripción:** Permite al agente enviar archivos directamente al usuario durante una conversación.
    * **Predeterminado:** Siempre habilitado.
    * **Configuración:** No requiere configuración.

    ***

    ### **Responder Preguntas Frecuentes**

    * **Descripción:** Permite al agente responder preguntas frecuentes sobre tu producto o servicio.
    * **Predeterminado:** Siempre habilitado.
    * **Configuración:** No requiere configuración. Puedes gestionar y actualizar las preguntas frecuentes en la sección **Conocimiento** del agente.

    ***

    ### **Recopilar Información**

    * **Descripción:** Permite al agente recopilar, verificar y almacenar información del usuario (por ejemplo, nombre, correo electrónico, número de teléfono) para generación de leads o solicitudes de servicio.
    * **Interruptor:** Desactivado por defecto.
    * **Configuración:** Define los campos que deseas que el agente recopile y dónde se debe almacenar la información.

    <Note>
      Esta herramienta es **tan importante** que una vez habilitada, activa una **pestaña dedicada de Recopilar información** en la sección de Habilidades. Desde allí puedes crear, editar y gestionar configuraciones de recopilación de información en detalle.
    </Note>

    <Accordion title="Cómo Configurar Recopilar Información">
      1. Ve a **Agente IA > Diseño > Habilidades > Recopilar Información**.
      2. Haz clic en **Nueva Configuración** para comenzar.
      3. Ingresa un **Nombre** para tu configuración (ej. `registro_interesados`).
      4. Agrega **Instrucciones Especiales** para guiar al agente (ej. "siempre verifica la ortografía del correo electrónico").
      5. Define los **campos** que deseas recopilar (nombre, correo, teléfono, etc.).
      6. Asigna la configuración a uno o más **canales** (ej. WhatsApp, Freshchat).
      7. Haz clic en **Guardar** para activar la configuración.
    </Accordion>

    ***

    ### **Enviar Correo de Notificación**

    * **Descripción:** Envía los detalles de la conversación automáticamente por correo electrónico después de que concluye una conversación.
    * **Interruptor:** Desactivado por defecto.
    * **Configuración:** Establece las direcciones de correo electrónico destinatarias.

    ***

    ### **Escalación Humana**

    * **Descripción:** Permite al agente transferir la conversación a un agente humano cuando no puede resolver la solicitud del usuario.
    * **Interruptor:** Desactivado por defecto.
    * **Depende de:** Se requiere una integración conectada con **Freshchat** o **Zendesk**.
    * **Configuración:** Establece las reglas de escalación y asigna la integración y grupo/cola correctos.

    <Note>
      Esta herramienta solo aparece cuando hay una integración compatible (Freshchat o Zendesk) conectada.
    </Note>
  </Tab>

  <Tab title="Herramientas Personalizadas">
    La pestaña **Herramientas Personalizadas** te permite crear herramientas que conectan tu agente de IA a cualquier API externa. Estas herramientas extienden las capacidades de tu agente más allá del conjunto integrado—puedes llamar a CRMs, ERPs, sistemas de reservas, servicios propietarios o cualquier API pública, directamente desde una conversación.

    ## ¿Qué son las Herramientas Personalizadas?

    Una herramienta personalizada es una solicitud HTTP que tu agente puede realizar durante una conversación—basada en la entrada del usuario, el contexto o configuraciones definidas por el operador. Defines:

    * **Qué** hace la herramienta (nombre, descripción)
    * **A dónde** llama (URL, método HTTP)
    * **Qué datos** envía (inputs/parámetros)
    * **Qué regresa** (forma de la respuesta esperada)

    Una vez guardada, el agente decide cuándo invocar la herramienta según la conversación.

    ***

    ## Creando una Herramienta Personalizada

    Navega a **Agente IA > Diseño > Habilidades > Herramientas Personalizadas** y haz clic en **Crear Herramienta**. Esto abre el **Skill Builder**, un editor paso a paso.

    <Tip>
      Cuando abres el Skill Builder por primera vez, carga un **ejemplo de Brevo** que muestra una integración de API realista. Puedes cambiar a otro ejemplo o comenzar desde una plantilla en blanco usando el selector de ejemplos en la parte superior.
    </Tip>

    ### Paso 1 — Nombre y descripción

    Dale a tu herramienta un **Título** claro y una **Descripción** de una línea que explique cuándo el agente debe usarla. La descripción es clave—es lo que la IA lee para decidir si debe llamar a esta herramienta.

    ### Paso 2 — Enlace web y método

    Ingresa la **URL** que tu herramienta llamará. Puedes incluir segmentos dinámicos usando la sintaxis `{placeholder}` (ej. `https://api.example.com/users/{user_id}`).

    Selecciona el **método HTTP**: GET, POST, PUT, PATCH o DELETE.

    ### Paso 3 — Inputs

    Los inputs son los datos que tu herramienta necesita. Cada input tiene:

    | Configuración          | Descripción                                                                |
    | ---------------------- | -------------------------------------------------------------------------- |
    | **Nombre**             | El nombre del parámetro (usado en la solicitud)                            |
    | **Tipo**               | Tipo de dato: texto, entero, decimal, verdadero/falso, lista u objeto      |
    | **Fuente**             | De dónde viene el valor (ver abajo)                                        |
    | **Requerido**          | Si el agente siempre debe proporcionar este valor                          |
    | **Descripción**        | Ayuda al agente a entender qué debe llenar                                 |
    | **Valores permitidos** | Lista opcional separada por comas para restringir opciones                 |
    | **Ubicación**          | Dónde va el valor en la solicitud HTTP: query string, headers, path o body |

    #### Fuentes de input

    | Fuente                      | Significado                                                                                                                       |
    | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
    | **Conversación**            | El agente extrae el valor del chat con el usuario                                                                                 |
    | **Valor fijo**              | Un valor constante que el operador configura al crear la herramienta (ej. una API key)                                            |
    | **Usuario final**           | Se resuelve en tiempo de ejecución desde la identidad del usuario final — ya sea su ID de usuario externo o un campo de metadatos |
    | **Estado / Store / Config** | Fuentes avanzadas de tiempo de ejecución para workflows y estado interno                                                          |

    #### Inputs de tipo objeto y campos anidados

    Cuando configuras el **Tipo** de un input como **objeto**, aparece un editor de campos anidados debajo. Puedes agregar campos dentro del objeto, cada uno con su propio nombre, tipo, descripción y opciones. Los objetos pueden anidarse en múltiples niveles.

    **Selección de fuente por campo (objetos de conversación)**

    Cuando la fuente de un input de tipo objeto es **Conversación**, cada campo anidado dentro de él puede especificar independientemente de dónde viene su valor. Un desplegable **"Comes from" (Proviene de)** aparece en cada campo anidado con tres opciones:

    | Fuente anidada    | Comportamiento                                                                                                                                                                             |
    | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | **Conversación**  | El agente le pide al usuario este valor durante el chat. Puedes marcarlo como requerido, agregar una descripción para el agente y restringirlo a valores permitidos específicos.           |
    | **Valor fijo**    | El valor es una constante definida por el operador. Aparece un campo de texto donde ingresas el valor que siempre se enviará.                                                              |
    | **Usuario final** | El valor se resuelve en tiempo de ejecución desde el contexto del usuario final. Eliges entre **ID de usuario externo** o **Un campo de metadatos** (y especificas la clave de metadatos). |

    <Tip>
      La selección de fuente por campo es poderosa para llamadas API que necesitan una mezcla de datos proporcionados por el usuario y valores resueltos por el sistema en el mismo objeto. Por ejemplo, un objeto `contacto` podría tener la `pregunta` del usuario llenada por la IA (conversación), un campo `canal` siempre configurado como `"whatsapp"` (fijo), y un `customer_id` obtenido del ID externo del usuario final (usuario final).
    </Tip>

    <Note>
      Solo los campos con fuente **Conversación** se muestran al modelo de IA. Los campos fijos y de usuario final se inyectan automáticamente en tiempo de ejecución—el agente nunca le pregunta al usuario por ellos.
    </Note>

    Cuando la fuente del objeto padre es **Valor fijo**, todos los campos anidados actúan como constantes (proporcionas un valor fijo para cada uno). Cuando la fuente del padre es **Usuario final**, los campos anidados son descriptivos (solo esquema).

    ### Paso 4 — Autenticación

    Si tu API requiere autenticación, agrega los headers apropiados (ej. `Authorization: Bearer {token}`) como un input de valor fijo ubicado en **headers**.

    ### Paso 5 — Qué regresa

    Pega un **ejemplo de respuesta JSON** de tu API. El constructor usa esto para entender la forma de los datos que regresan, lo que ayuda al agente a interpretar los resultados para el usuario.

    Opcionalmente define **campos de salida** para indicarle al agente qué partes de la respuesta destacar.

    ***

    ## Guardando una Herramienta Personalizada

    El botón **Guardar** se habilita una vez que la definición de tu herramienta está completa:

    * La herramienta tiene un **nombre**
    * La **URL** es una dirección web válida (que comienza con `http`)
    * Todos los placeholders de la URL (ej. `{user_id}`) tienen un input correspondiente definido
    * No hay dos inputs con el **mismo nombre**
    * Se proporciona un **ejemplo de respuesta** válido

    Si alguna de estas condiciones no se cumple, el botón Guardar está deshabilitado y un mensaje debajo te indica exactamente qué falta.

    <Note>
      No hay un paso de prueba separado — el constructor valida tu configuración en línea. Una vez que todos los campos están completos y válidos, puedes guardar inmediatamente.
    </Note>

    ***

    ## Vista Previa de Código

    El Skill Builder muestra una **vista previa del código Python** en vivo en el lado derecho. Este es el código real que se ejecutará cuando el agente invoque tu herramienta. Puedes usarlo para verificar la estructura de la solicitud, los headers y la ubicación de los parámetros.

    ***

    ## Editando una Herramienta Personalizada existente

    Desde la lista de **Herramientas Personalizadas**, haz clic en cualquier herramienta para reabrirla en el Skill Builder. Todos los campos se llenan automáticamente. Realiza tus cambios y haz clic en **Guardar cambios**.

    ***

    ## Mejores prácticas

    * **Sé específico en las descripciones** — el agente usa tu descripción para decidir cuándo llamar a la herramienta. Descripciones vagas llevan a invocaciones incorrectas.
    * **Usa valores fijos para secretos** — nunca le pidas al usuario las API keys. Colócalas en un input de valor fijo ubicado en headers.
    * **Prueba en el Playground** — después de guardar tu herramienta, ve al Playground y genera una conversación que debería invocarla. Revisa el Registro de Tareas para verificar que se ejecutó correctamente.
    * **Usa fuentes por campo en objetos** — cuando tu API espera un objeto que mezcla input del usuario con valores del sistema (como IDs de usuario o flags constantes), usa la selección de fuente por campo en lugar de construir inputs separados.
  </Tab>
</Tabs>
