Dynamische variabelen
Dynamische variabelen laten je runtimewaarden invoegen in de berichten, system prompts en tools van je agent. Zo kun je elk gesprek personaliseren met gebruikersspecifieke gegevens zonder meerdere agents te maken.
Overzicht
Dynamische variabelen kunnen worden geïntegreerd in meerdere onderdelen van je agent:
- System prompts om gedrag en context aan te passen
- Eerste berichten om begroetingen te personaliseren
- Toolparameters en headers om gebruikersspecifieke gegevens door te geven
Hier zijn enkele voorbeelden waarin dynamische variabelen nuttig zijn:
- Begroetingen personaliseren met gebruikersnamen
- Accountgegevens opnemen in antwoorden
- Gegevens doorgeven aan tool calls
- Gedrag aanpassen op basis van abonnementsniveaus
- Systeemgegevens openen zoals de gespreks-ID of gespreksduur
Dynamische variabelen ondersteunen drie waardetypen:
Systeemvariabelen
Je agent heeft in elk gesprek zonder runtimeconfiguratie toegang tot ingebouwde system__*-variabelen. Deze variabelen hebben de gereserveerde naamruimte system__ als prefix en worden automatisch bijgewerkt naarmate het gesprek vordert. Aangepaste dynamische variabelen mogen de prefix system__ niet gebruiken of systeemvariabelen overschrijven.
Variabelen met † veranderen tussen beurten. Als je ze in prompttekst plaatst, kan dat promptcaching verhinderen. Zie Best practices voor alternatieven.
Identiteit van agent en gesprek
Tijd en tijdzone
Telefonie en berichten
Deze variabelen worden ingevuld wanneer dat van toepassing is voor telefonie- en berichtenkanalen:
Gespreksstatus per beurt
Indeling van gesprekshistorie
De variabele system__conversation_history bevat een JSON-object met de volgende structuur:
Elke invoer bevat een role ("user", "agent" of "tool") en een van de volgende:
message: De tekstinhoud van de beurttool_requests: Een array met tool calls van de agent, met opgeloste parameterwaardentool_results: Een array met toolantwoorden
Als een toolresultaat of parameter een geneste gesprekshistorie bevat, wordt deze geredigeerd tot een placeholder (zoals [conversation_history (5 turns)]) om onbeperkte recursieve uitbreiding te voorkomen.
Deze variabele is nuttig om gesprekscontext door te geven aan tools (zoals webhooks of aangepaste LLM’s) of om gesprekshistorie op te nemen in subagent-prompts tijdens overdrachten.
Geheime dynamische variabelen
Geheime dynamische variabelen worden op dezelfde manier ingevuld als gewone dynamische variabelen, maar geven aan ElevenAgents aan dat ze alleen in headers voor dynamische variabelen mogen worden gebruikt en nooit als onderdeel van de system prompt of het eerste bericht van een agent naar een LLM-provider mogen worden gestuurd.
Gebruik geheime dynamische variabelen voor authenticatietokens of privé-ID’s die niet naar een LLM mogen worden gestuurd. Voeg de prefix secret__ toe aan de dynamische variabele om een geheime dynamische variabele te maken.
Geheime waarden worden geredigeerd opgeslagen, dus de conversations API retourneert ze als <REDACTED>.
Webhooks voor transcriptie na een oproep leveren de oorspronkelijke waarden, dus zorg dat je webhookendpoint
deze als geheimen verwerkt. Gebruik de prefix secret__ niet voor waarden die je wilt teruglezen uit de
conversations API. Geef deze door als gewone dynamische variabelen, of geef een niet-gevoelige identifier door en
zoek de gevoelige waarde op in je eigen systeem.
Dynamische variabelen bijwerken vanuit tools
Tool calls kunnen dynamische variabelen maken of bijwerken als ze een geldig JSON-object retourneren. Stel de objectpaden in met puntnotatie om aan te geven wat moet worden geëxtraheerd. Als het veld of pad niet bestaat, wordt niets bijgewerkt.
Voorbeeld van een responsobject en puntnotatie:
- Status komt overeen met het pad:
response.status - Het e-mailadres van de eerste gebruiker in de gebruikersarray komt overeen met het pad:
response.users.0.email
Stel de toewijzing als volgt in om een dynamische variabele bij te werken naar het e-mailadres van de eerste gebruiker.

Toewijzingen worden geconfigureerd voor elke webhooktool; zie tooltoewijzingen in de API-referentie.
Handleiding
Vereisten:
- Een ElevenLabs-account
- Een geconfigureerde ElevenAgents-agent (volg de quickstart om er een te maken)
Dynamische variabelen in prompts definiëren
Voeg variabelen met dubbele accolades {{variable_name}} toe aan je:
- System prompts
- Eerste berichten
- Toolparameters


Dynamische variabelen in tools definiëren
Je kunt dynamische variabelen ook in de toolconfiguratie definiëren.
Stel het waardetype in op Dynamic variable en klik op de knop + om een nieuwe dynamische variabele te maken.


Placeholders instellen
Configureer standaardwaarden om te testen zonder tijdens runtime variabelen door te geven.
Bijwerken via het dashboard
Bijwerken via de CLI
Bijwerken via de API
Stel in het dashboard van de agent standaardwaarden in voor elke dynamische variabele.

Variabelen doorgeven tijdens runtime
Geef de dynamische variabelen in je code op wanneer je een gesprek start:
Zorg dat je de nieuwste SDK hebt geïnstalleerd.
Integratie met openbare praatpagina
De openbare praatpagina ondersteunt dynamische variabelen via URL-parameters, zodat je gesprekken kunt personaliseren wanneer je agentlinks deelt. Dit is vooral nuttig voor het insluiten van gepersonaliseerde agents in websites, e-mails of marketingcampagnes.
Methoden voor URL-parameters
Er zijn twee methoden om dynamische variabelen door te geven aan de openbare praatpagina:
Methode 1: Base64-gecodeerde JSON
Geef variabelen door als een base64-gecodeerd JSON-object met de parameter vars:
De parameter vars bevat base64-gecodeerde JSON:
Methode 2: Afzonderlijke queryparameters
Geef variabelen door met queryparameters met de prefix var_:
Parameterprioriteit
Wanneer beide methoden tegelijk worden gebruikt, hebben afzonderlijke var_-parameters voorrang op de base64-gecodeerde variabelen om conflicten te voorkomen:
In dit voorbeeld is user_name "John" (uit var_user_name) in plaats van "Jane" (uit de base64-gecodeerde vars).
Implementatievoorbeelden
JavaScript-URL genereren
Python-URL genereren
URL handmatig samenstellen
Best practices
Stel een tijdzone in in plaats van de huidige tijd in prompts te plaatsen
Variabelen in de system prompt, workflow-nodes en procedures worden elke beurt opgelost. Als een waarde tussen beurten verandert, kan de prompt niet worden gecachet, wat de kosten en latentie verhoogt. {{system__time_utc}} en {{system__time_second}} veranderen elke beurt; {{system__time}} en {{system__time_minute}} veranderen elke minuut.
Stel een tijdzone in met de tijdzoneknop in de System Prompt-editor (conversation_config.agent.prompt.timezone) in plaats van {{system__time}} of {{system__time_utc}} in prompttekst te plaatsen, zodat de agent de huidige datum en tijd krijgt. Wanneer een tijdzone is ingesteld, voegt het platform de huidige datum en tijd buiten de gecachete promptprefix toe, zodat je system prompt tussen beurten gecachet blijft. Zonder tijdzone ontvangt de agent de huidige datum en tijd niet.
Als je prompt de datum of het uur inline nodig heeft, combineer je {{system__time_date}}, {{system__time_hour}} en {{system__timezone}} (bijvoorbeeld Today is {{system__time_date}}, hour {{system__time_hour}} ({{system__timezone}})). Deze veranderen maximaal eenmaal per uur.
Koppel variabelen met live status aan toolparameters en headers
Als een tool een waarde met † nodig heeft, koppel je deze aan de toolparameter of header in plaats van deze in de prompt te plaatsen. Toolparameters worden alleen opgelost wanneer de tool wordt aangeroepen, dus ze hebben geen invloed op promptcaching. De LLM ziet het gesprek al, dus {{system__conversation_history}} is zelden nodig in prompts.
Overweeg alternatieven voor beurtentellers in prompts
Als je prompt beurtentellers zoals {{system__agent_turns}} controleert, overweeg dan deze alternatieven. Gebruik first_message voor statische openingsbegroetingen of mededelingen.
Voor gedrag bij het eerste antwoord kun je de instructie formuleren rond de gesprekshistorie (bijvoorbeeld “On your first reply, when you have not yet greeted the caller…”). Dit is afhankelijk van het opvolgen van de instructie door de LLM, dus test dit met je model en behoud de beurtenteller als de resultaten minder betrouwbaar zijn.
Als de teller alleen bepaalt wanneer je moet vertakken of escaleren, kan een expressievoorwaarde voor een workflowedge of een If-stapexpressie in een gestructureerde procedure (zoals system__agent_turns >= 5) dit buiten de prompt afhandelen. Dit geldt niet voor gevallen waarin de LLM de waarde zelf nodig heeft.
Gebruik secret__ alleen voor waarden die in toolheaders blijven
Voeg de prefix secret__ toe aan authenticatietokens en API-sleutels, zodat ze alleen aan toolheaders kunnen worden gekoppeld en nooit naar de LLM worden gestuurd. Omdat secret__-waarden als <REDACTED> worden geredigeerd in de conversations API (webhooks voor transcriptie na een oproep ontvangen nog steeds de oorspronkelijke waarden), geef je waarden die je wilt teruglezen uit de conversations API door als gewone dynamische variabelen, of geef je een niet-gevoelige identifier door en zoek je de gevoelige waarde op in je eigen systeem.
Vertrouw niet op system__user_id voor authenticatie
system__user_id wordt door de client geleverd voor tracking en analyses en wordt niet geverifieerd door ElevenAgents. Verifieer de identiteit van de beller via een webhook voor het starten van een gesprek, een ondertekend token in een secret__-headervariabele of een verificatie-tool call voordat je accountgegevens toont.
Configureer placeholders voor testen en previews
Stel voor elke aangepaste variabele die je in je prompts, eerste berichten en tools gebruikt standaardwaarden in bij dynamic_variable_placeholders. Previewgesprekken in het dashboard en simulatietests voeren geen webhooks voor het starten van een gesprek uit, dus niet-ingestelde variabelen blijven tijdens het testen als letterlijke placeholders {{variable_name}} staan.
Problemen oplossen
Variabelen worden niet vervangen
Controleer het volgende:
- Variabelenamen komen exact overeen (hoofdlettergevoelig)
- Variabelen gebruiken dubbele accolades:
{{variable_name}} - Variabelen zijn opgenomen in je object
dynamic_variables
Typefouten
Controleer het volgende:
- Variabelewaarden komen overeen met het verwachte type
- Waarden zijn alleen strings, getallen of booleans