Skip to main content

Introduccion

El sistema de variables del Agente de IA permite inyectar informacion dinamica en el prompt, servicios y acciones del agente. Las variables se resuelven automaticamente antes de cada interaccion con el modelo de IA, permitiendo personalizar el comportamiento del agente segun el contexto de la conversacion.
Las variables usan la sintaxis {{scope.codigo}} donde scope indica el origen de la variable y codigo es el identificador unico.

Scopes de Variables

El sistema maneja 3 scopes (alcances) de variables, cada uno con un proposito diferente:

1. Variables del Sistema (system)

Variables predefinidas que se actualizan automaticamente durante la conversacion. No se pueden modificar manualmente.

2. Variables del Contacto (contact)

Variables que provienen del contacto que esta conversando con el agente. Se resuelven dinamicamente buscando primero en los campos fijos del contacto y luego en las variables personalizadas del contacto (contactData.variables[]).
Las variables del contacto con prefijo ctc_ buscan en el array de variables personalizadas del contacto. Por ejemplo, {{contact.ctc_product_id}} busca la variable con codigo ctc_product_id en el contacto actual.

3. Variables Personalizadas (custom)

Variables definidas por el usuario en la pestana Variables del agente. Cada variable tiene un valor por defecto que se usa si no se envia un valor en el request on-message. Ejemplo: Si creas una variable con codigo empresa y valor por defecto "Mi Empresa", puedes usarla como {{custom.empresa}} en el prompt o servicios.

Donde Usar Variables

Las variables se pueden utilizar en 3 contextos del agente:

En el Prompt

Las variables se resuelven en el texto del prompt antes de enviarlo al modelo de IA. Esto permite personalizar las instrucciones del agente dinamicamente.

En Servicios (5 ubicaciones)

Las variables se resuelven en multiples partes de la configuracion de un servicio:

En Acciones (1 ubicacion)


Orden de Resolucion

Cuando un servicio o accion contiene variables, estas se resuelven en un orden especifico:
1

Variables del Agente

Primero se resuelven las variables con sintaxis {{scope.codigo}} (system, contact, custom).
2

Variables Legacy

Despues se resuelven las variables con sintaxis legacy [variable] como [lastmessage], [sessionId], etc.
3

Campos del LLM

Finalmente se sustituyen los campos extraidos por el modelo de IA con sintaxis {campo}, que corresponden a los requiredFields del servicio.
La sintaxis legacy [variable] sigue funcionando para retrocompatibilidad. Los agentes existentes que usan [lastmessage], [sessionId], etc. en sus servicios no necesitan ser modificados.

Configuracion en el Panel

La pestana Variables del agente muestra las 3 categorias de variables organizadas en secciones colapsables:
  • Variables del Sistema: Lista de solo lectura con todas las variables predefinidas.
  • Variables del Contacto: Lista de solo lectura con las variables disponibles del contacto.
  • Variables Personalizadas: Seccion editable donde puedes crear, modificar y eliminar variables propias.
Cada variable incluye un boton de copiar que copia la sintaxis completa {{scope.codigo}} al portapapeles para insertarla facilmente en el prompt, servicios o acciones.

Uso en la API (on-message)

Las variables personalizadas pueden enviarse dinamicamente en cada llamada al endpoint on-message. Esto permite que webhooks, automatizaciones o integraciones externas inyecten valores en tiempo real.

Request

Comportamiento de variables

El campo variables es opcional. Si un agente no tiene variables personalizadas y no se envian en el request, todo funciona exactamente como antes.

Ejemplo Completo

1. Definir variables en el agente

En la pestana Variables, crear:
  • empresa (tipo: string, valor por defecto: "Plazbot")
  • api_key (tipo: string, valor por defecto: "sk-default-123")

2. Usar en el prompt

3. Usar en un servicio

4. Enviar variables por API

En este caso, {{custom.empresa}} se resuelve como "Banco Digital" (valor del request) en lugar de "Plazbot" (valor por defecto).

Retrocompatibilidad

La sintaxis anterior [variable] sigue funcionando. No es necesario migrar agentes existentes. Ambas sintaxis pueden coexistir en el mismo servicio.
Ejemplo mixto (ambas sintaxis en el mismo bodyTemplate):