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.
VariableCodigoDescripcionEjemplo
Ultimo mensaje{{system.lastmessage}}Ultimo mensaje enviado por el usuario"Hola, necesito agendar una cita"
Hora del mensaje{{system.lastmessagetime}}Fecha y hora del ultimo mensaje2026-04-13 18:53:28
Session ID{{system.sessionId}}ID unico de la sesion actual51932114990
Agent ID{{system.agentId}}ID del agente que procesa la conversacionage_abc123
Ultima respuesta IA{{system.lastmessageIA}}Ultima respuesta generada por el agente"Te ayudo a agendar tu cita"
Archivo temporal{{system.urlTempFile}}URL del archivo adjunto enviado por el usuariohttps://temp.plazbot.com/file123
Fecha actual{{system.currentDate}}Fecha actual en la zona horaria del workspace2026-04-13
Hora actual{{system.currentTime}}Hora actual en la zona horaria del workspace14:30:00

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[]).
VariableCodigoDescripcion
Nombre completo{{contact.fullname}}Nombre del contacto
Email{{contact.email}}Correo electronico
Telefono{{contact.phone}}Numero de telefono
Plataforma{{contact.platform}}Canal de origen (whatsapp, telegram, etc.)
Variable personalizada{{contact.ctc_CODIGO}}Busca en las variables del contacto por codigo
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.
VariableCodigoDescripcion
Definida por usuario{{custom.CODIGO}}Valor personalizado segun configuracion
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.
Eres un asistente de {{custom.empresa}}.
El cliente que te escribe se llama {{contact.fullname}}.
Tu objetivo es {{custom.objetivo}}.
La fecha de hoy es {{system.currentDate}}.

En Servicios (5 ubicaciones)

Las variables se resuelven en multiples partes de la configuracion de un servicio:
UbicacionDescripcionEjemplo
Endpoint (URL)Variables en la URL del serviciohttps://api.ejemplo.com/users/{{system.sessionId}}
HeadersVariables en los encabezados HTTPAuthorization: Bearer {{custom.api_key}}
Body TemplateVariables en el cuerpo de la peticion{ "cliente": "{{contact.fullname}}" }
Response MessageVariables en el mensaje de respuestaGracias {{contact.fullname}}, tu solicitud fue procesada
Response ConditionsVariables en condiciones de respuestaEvaluacion dinamica del resultado

En Acciones (1 ubicacion)

UbicacionDescripcionEjemplo
Response MessageVariables en el mensaje de respuesta de la accionListo {{contact.fullname}}, se asigno tu caso

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

curl -X POST https://api.plazbot.com/agent/on-message \
  -H "Content-Type: application/json" \
  -d '{
    "agentId": "age_xxxxx",
    "question": "Hola, necesito informacion",
    "sessionId": "51932114990",
    "platform": "api",
    "variables": {
      "empresa": "Acme Corp",
      "plan": "Enterprise",
      "origen_campana": "Google Ads"
    }
  }'

Comportamiento de variables

EscenarioResultado
Se envia variables en el requestLos valores del request tienen prioridad sobre los valores por defecto del agente
No se envia variablesSe usan los defaultValue configurados en las variables del agente
Se envia una variable no definida en el agenteSe resuelve igualmente con el valor enviado
No hay variables configuradas ni enviadasLas expresiones {{custom.X}} quedan sin resolver (string vacio)
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

Eres el asistente virtual de {{custom.empresa}}.
Responde de manera amable y profesional.
El cliente se llama {{contact.fullname}}.

3. Usar en un servicio

{
  "intent": "consultar_saldo",
  "method": "POST",
  "endpoint": "https://api.ejemplo.com/saldo",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{custom.api_key}}",
    "X-Session": "{{system.sessionId}}"
  },
  "bodyTemplate": {
    "telefono": "{{contact.phone}}",
    "consulta": "{{system.lastmessage}}",
    "numero_cuenta": "{numero_cuenta}"
  },
  "requiredFields": [
    {
      "name": "numero_cuenta",
      "description": "Numero de cuenta del cliente",
      "type": "string"
    }
  ],
  "responseMessage": "{{contact.fullname}}, tu saldo es: {saldo}"
}

4. Enviar variables por API

curl -X POST https://api.plazbot.com/agent/on-message \
  -H "Content-Type: application/json" \
  -d '{
    "agentId": "age_xxxxx",
    "question": "Cual es mi saldo?",
    "sessionId": "51932114990",
    "variables": {
      "empresa": "Banco Digital",
      "api_key": "sk-prod-456"
    }
  }'
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.
SintaxisEstadoEjemplo
[lastmessage]Activa (legacy)Funciona en servicios como siempre
{{system.lastmessage}}Activa (nueva)Equivalente, con mas opciones de scope
{{campo_requerido}}ActivaCampos extraidos por el LLM en servicios
Ejemplo mixto (ambas sintaxis en el mismo bodyTemplate):
{
  "bodyTemplate": {
    "mensaje": "[lastmessage]",
    "sesion": "{{system.sessionId}}",
    "empresa": "{{custom.empresa}}",
    "campo_llm": "{curp}"
  }
}