Variables dinámicas
Pasa valores en tiempo de ejecución para personalizar el comportamiento de tu agente.
Las variables dinámicas te permiten insertar valores en tiempo de ejecución en los mensajes, prompts del sistema y herramientas de tu agente. Así puedes personalizar cada conversación con datos específicos de cada usuario sin crear varios agentes.
Descripción general
Las variables dinámicas se pueden integrar en varios aspectos de tu agente:
- Prompts del sistema para personalizar el comportamiento y el contexto
- Primeros mensajes para personalizar los saludos
- Parámetros y encabezados de herramientas para pasar datos específicos del usuario
Estos son algunos ejemplos en los que las variables dinámicas resultan útiles:
- Personalizar saludos con nombres de usuario
- Incluir datos de la cuenta en las respuestas
- Pasar datos a llamadas de herramientas
- Personalizar el comportamiento según los niveles de suscripción
- Acceder a información del sistema como el ID de la conversación o la duración de la llamada
Las variables dinámicas admiten tres tipos de valores:
Variables dinámicas del sistema
Tu agente tiene acceso a variables integradas system__* en cada conversación sin necesidad de configuración en tiempo de ejecución. Estas variables llevan el prefijo del espacio de nombres reservado system__ y se actualizan automáticamente a medida que avanza la conversación. Las variables dinámicas personalizadas no pueden usar el prefijo system__ ni sobrescribir variables del sistema.
Las variables marcadas con † cambian entre turnos. Incluirlas en el texto del prompt puede impedir la caché de prompts; consulta las Buenas prácticas para ver alternativas.
Identidad del agente y de la conversación
Hora y zona horaria
Telefonía y mensajería
Estas variables se rellenan cuando corresponde en los canales de telefonía y mensajería:
Estado de la conversación por turno
Formato del historial de conversación
La variable system__conversation_history contiene un objeto JSON con la siguiente estructura:
Cada entrada incluye un role ("user", "agent" o "tool") y uno de los siguientes elementos:
message: El contenido de texto del turnotool_requests: Una matriz de llamadas a herramientas realizadas por el agente, con valores de parámetros resueltostool_results: Una matriz de respuestas de herramientas
Si el resultado o parámetro de una herramienta contiene un historial de conversación anidado, se oculta con un marcador de posición (como [conversation_history (5 turns)]) para evitar una expansión recursiva ilimitada.
Esta variable es útil para pasar el contexto de la conversación a herramientas (como webhooks o LLM personalizados) o para incluir el historial de conversación en los prompts de subagentes durante las transferencias.
Variables dinámicas secretas
Las variables dinámicas secretas se rellenan de la misma forma que las variables dinámicas normales, pero indican a ElevenAgents que solo deben utilizarse en encabezados de variables dinámicas y que nunca deben enviarse a un proveedor de LLM como parte del prompt del sistema o el primer mensaje de un agente.
Usa variables dinámicas secretas para tokens de autenticación o ID privados que no deban enviarse a un LLM. Para crear una variable dinámica secreta, añade el prefijo secret__ a la variable dinámica.
Los valores secretos se almacenan ocultos, por lo que la API de conversaciones los devuelve como <REDACTED>.
Los webhooks de transcripción posterior a la llamada entregan los valores originales, así que asegúrate de que tu ruta de webhook
los gestione como secretos. No uses el prefijo secret__ para valores que necesites recuperar desde la
API de conversaciones. Pásalos como variables dinámicas normales o pasa un identificador no sensible y
busca el valor sensible en tu propio sistema.
Actualizar variables dinámicas desde herramientas
Las llamadas a herramientas pueden crear o actualizar variables dinámicas si devuelven un objeto JSON válido. Para especificar qué se debe extraer, establece las rutas de objeto mediante notación de puntos. Si el campo o la ruta no existen, no se actualiza nada.
Ejemplo de un objeto de respuesta y notación de puntos:
- El estado corresponde a la ruta:
response.status - El correo electrónico del primer usuario de la matriz de usuarios corresponde a la ruta:
response.users.0.email
Para actualizar una variable dinámica con el correo electrónico del primer usuario, configura la asignación de este modo.

Las asignaciones se configuran en cada herramienta webhook; consulta las asignaciones de herramientas en la referencia de la API.
Guía
Requisitos previos:
- Una cuenta de ElevenLabs
- Un agente de ElevenAgents configurado (sigue la guía de inicio rápido para crear uno)
Definir variables dinámicas en prompts
Añade variables usando dobles llaves {{variable_name}} en tus:
- Prompts del sistema
- Primeros mensajes
- Parámetros de herramientas


Definir variables dinámicas en herramientas
También puedes definir variables dinámicas en la configuración de herramientas.
Para crear una nueva variable dinámica, establece el tipo de valor en Variable dinámica y haz clic en el botón +.


Configurar marcadores de posición
Configura valores predeterminados para hacer pruebas sin pasar variables en tiempo de ejecución.
Actualizar desde el panel
Actualizar mediante la CLI
Actualizar mediante la API
Configura valores predeterminados para cada variable dinámica en el panel del agente.

Pasar variables en tiempo de ejecución
Al iniciar una conversación, proporciona las variables dinámicas en tu código:
Asegúrate de tener instalada la versión más reciente del SDK.
Integración de la página pública para hablar con el agente
La página pública para hablar con el agente admite variables dinámicas mediante parámetros de URL, lo que te permite personalizar conversaciones al compartir enlaces de agentes. Resulta especialmente útil para integrar agentes personalizados en sitios web, correos electrónicos o campañas de marketing.
Métodos de parámetros de URL
Hay dos métodos para pasar variables dinámicas a la página pública para hablar con el agente:
Método 1: JSON codificado en Base64
Pasa variables como un objeto JSON codificado en base64 mediante el parámetro vars:
El parámetro vars contiene JSON codificado en base64:
Método 2: Parámetros de consulta individuales
Pasa variables mediante parámetros de consulta con el prefijo var_:
Precedencia de parámetros
Cuando se utilizan ambos métodos al mismo tiempo, los parámetros individuales var_ tienen prioridad sobre las variables codificadas en base64 para evitar conflictos:
En este ejemplo, user_name será "John" (de var_user_name) en lugar de "Jane" (de vars codificado en base64).
Ejemplos de implementación
Generación de URL con JavaScript
Generación de URL con Python
Construcción manual de URL
Buenas prácticas
Configura una zona horaria en lugar de incluir la hora actual en los prompts
Las variables del prompt del sistema, los nodos de workflow y los procedimientos se resuelven en cada turno. Si un valor cambia entre turnos, el prompt no se puede almacenar en caché, lo que aumenta el coste y la latencia. {{system__time_utc}} y {{system__time_second}} cambian en cada turno; {{system__time}} y {{system__time_minute}} cambian cada minuto.
Para proporcionar al agente la fecha y hora actuales, configura una zona horaria con el botón de zona horaria en el editor de prompts del sistema (conversation_config.agent.prompt.timezone) en lugar de incluir {{system__time}} o {{system__time_utc}} en el texto del prompt. Cuando se configura una zona horaria, la plataforma añade la fecha y hora actuales fuera del prefijo de prompt almacenado en caché, de modo que tu prompt del sistema permanece en caché entre turnos. Sin una zona horaria, el agente no recibe la fecha y hora actuales.
Si tu prompt necesita la fecha o la hora en línea, combina {{system__time_date}}, {{system__time_hour}} y {{system__timezone}} (por ejemplo, Today is {{system__time_date}}, hour {{system__time_hour}} ({{system__timezone}})). Estas variables cambian como máximo una vez por hora.
Vincula variables de estado en directo a parámetros y encabezados de herramientas
Si una herramienta necesita un valor marcado con †, vincúlalo al parámetro o encabezado de la herramienta en lugar de incluirlo en el prompt. Los parámetros de herramientas se resuelven solo cuando se llama a la herramienta, por lo que no afectan a la caché de prompts. El LLM ya ve la conversación, así que rara vez se necesita {{system__conversation_history}} en los prompts.
Considera alternativas a los contadores de turnos en los prompts
Si tu prompt comprueba contadores de turnos como {{system__agent_turns}}, considera estas alternativas. Usa first_message para saludos o avisos iniciales estáticos.
Para el comportamiento de la primera respuesta, puedes formular la instrucción en torno al historial de la conversación (por ejemplo, “En tu primera respuesta, cuando aún no hayas saludado a quien llama…”). Esto depende de que el LLM siga la instrucción, así que pruébalo con tu modelo y mantén el contador de turnos si los resultados son menos fiables.
Si el contador solo decide cuándo ramificar o escalar, una condición de expresión de arista de workflow o una expresión de paso If de procedimiento estructurado (como system__agent_turns >= 5) puede gestionarlo fuera del prompt. Esto no cubre los casos en los que el LLM necesita el propio valor.
Usa secret__ solo para valores que permanecen en encabezados de herramientas
Añade el prefijo secret__ a los tokens de autenticación y las claves de API para que solo se puedan vincular a encabezados de herramientas y nunca se envíen al LLM. Como los valores secret__ se ocultan como <REDACTED> en la API de conversaciones (los webhooks de transcripción posterior a la llamada siguen recibiendo los valores originales), pasa como variables dinámicas normales los valores que necesites recuperar desde la API de conversaciones, o pasa un identificador no sensible y busca el valor sensible en tu propio sistema.
No uses system__user_id para la autenticación
system__user_id lo proporciona el cliente para seguimiento y análisis, y ElevenAgents no lo verifica. Verifica la identidad de quien llama mediante un webhook de inicio de conversación, un token firmado en una variable de encabezado secret__ o una llamada a una herramienta de verificación antes de exponer datos de la cuenta.
Configura marcadores de posición para pruebas y vistas previas
Configura valores predeterminados en dynamic_variable_placeholders para cada variable personalizada usada en tus prompts, primeros mensajes y herramientas. Las conversaciones de vista previa en el panel y las pruebas de simulación no ejecutan webhooks de inicio de conversación, por lo que las variables sin configurar permanecen como marcadores de posición literales {{variable_name}} durante las pruebas.
Solución de problemas
Las variables no se sustituyen
Comprueba que:
- Los nombres de las variables coincidan exactamente (distinguen mayúsculas y minúsculas)
- Las variables usen llaves dobles:
{{variable_name}} - Las variables estén incluidas en tu objeto
dynamic_variables
Errores de tipo
Asegúrate de que:
- Los valores de las variables coincidan con el tipo esperado
- Los valores sean solo cadenas, números o valores booleanos