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

# Variablen

> Lerne, wie du Variablen verwendest, um die Prompts deines Agenten dynamisch zu personalisieren.

Mit Variablen kannst du **dynamische Daten direkt in den Prompt deines Agenten einfügen** – etwa den Kundennamen, Telefonnummer, aktuelles Datum oder beliebige eigene Daten. So personalisiert dein Agent Gespräche und greift auf relevante Informationen zu, ohne dass du sie fest in den Prompt schreiben musst.

## Schnellstart

<Steps>
  <Step title="Variable im Prompt referenzieren">
    Verwende doppelte geschweifte Klammern: `{{variableName}}`
  </Step>

  <Step title="Systemvariablen funktionieren automatisch">
    Variablen wie `{{firstName}}`, `{{currentDate}}` und `{{phoneNumber}}` sind immer verfügbar
  </Step>

  <Step title="Eigene Variablen für deine Daten anlegen">
    Füge eigene Eigenschaften zu Kontakten hinzu (z. B. `{{contractId}}`, `{{city}}`) und referenziere sie im Prompt
  </Step>
</Steps>

***

<Tabs>
  <Tab title="Anwendungsfälle">
    * **Begrüßung personalisieren** — *„Hallo `{{firstName}}`, hier ist Emma von telli"*
    * **Kundendaten einbeziehen** — *„Ich sehe, es geht um Ihren Vertrag `{{contractId}}`"*
    * **Kontextabhängiges Routing** — Kundeneigenschaften nutzen, um den Gesprächsverlauf zu steuern
    * **Zeitabhängiges Verhalten** — Antworten basierend auf `{{currentTime}}` oder `{{currentWeekday}}` anpassen
    * **Auftragsinformationen übergeben** — Auftragsnummern, Produktnamen oder beliebige Daten aus deinem System einbinden
  </Tab>

  <Tab title="Variablentypen">
    Diese Standardvariablen stellt telli automatisch für jeden Anruf bereit. Du musst sie nicht konfigurieren – sie sind immer verfügbar:

    | **Variable**             | **Beschreibung**                          |
    | :----------------------- | :---------------------------------------- |
    | **`{{firstName}}`**      | Vorname des Kunden                        |
    | **`{{lastName}}`**       | Nachname des Kunden                       |
    | **`{{phoneNumber}}`**    | Telefonnummer des Kunden                  |
    | **`{{email}}`**          | E-Mail-Adresse des Kunden                 |
    | **`{{language}}`**       | Sprache des Kunden                        |
    | **`{{currentDate}}`**    | Heutiges Datum                            |
    | **`{{currentTime}}`**    | Aktuelle Uhrzeit                          |
    | **`{{currentWeekday}}`** | Aktueller Wochentag                       |
    | **`{{callDirection}}`**  | Ob der Anruf eingehend oder ausgehend ist |
  </Tab>

  <Tab title="Eigene Variablen">
    Variablen und Eigenschaften, die du beim Anlegen von Kontakten in telli selbst definierst. Du hast völlige Flexibilität, beliebige Informationen an jeden Agenten im Account zu übergeben.

    <video controls playsinline style={{ width: '100%', cursor: 'pointer' }}>
      <source src="https://mintcdn.com/telli/Ciwn25xicMxgvfXB/cookbooks/cookbookmedia/PropertyCreation.mp4?fit=max&auto=format&n=Ciwn25xicMxgvfXB&q=85&s=f7556aeb83d883f8983b1a01124b277b" type="video/mp4" data-path="cookbooks/cookbookmedia/PropertyCreation.mp4" />
    </video>

    | **Variable**                    | **Beispielanwendung**                           |
    | :------------------------------ | :---------------------------------------------- |
    | **`{{product}}`**               | Aktuelles Produkt des Kunden                    |
    | **`{{city}}`**                  | Stadt des Kunden                                |
    | **`{{customerId}}`**            | Kunden-ID                                       |
    | **`{{contractId}}`**            | Vertragsnummer                                  |
    | **`{{currentTotalPrice}}`**     | Aktueller Vertragswert                          |
    | **`{{__contact_empfangsart}}`** | Benutzerdefiniertes Feld aus den Kontaktdetails |

    <Warning>
      Die Variablennamen im Prompt müssen exakt mit den Namen in den Kontaktdetails übereinstimmen. Wenn du ein Feld **`contractId`** im Kontakt benennst, musst du es als **`{{contractId}}`** im Prompt referenzieren – nicht als **`{{contract_id}}`** oder **`{{ContractId}}`**.
    </Warning>
  </Tab>
</Tabs>

***

<Tabs>
  <Tab title="Best Practices">
    <video controls playsinline style={{ width: '100%', cursor: 'pointer' }}>
      <source src="https://mintcdn.com/telli/Ciwn25xicMxgvfXB/cookbooks/cookbookmedia/variableuse.mp4?fit=max&auto=format&n=Ciwn25xicMxgvfXB&q=85&s=dd6e3fb54dd21ca123a76e09f4f1eeb0" type="video/mp4" data-path="cookbooks/cookbookmedia/variableuse.mp4" />
    </video>

    **Variablen zentral definieren**

    **Definiere alle Variablen in einem zentralen Abschnitt**, damit der Agent vollständige Klarheit über verfügbare Werte hat.

    ***

    **Keine Logik direkt an Rohwerten aufhängen**

    Wenn eine Variable unbekannt, leer oder **`0`** ist, hat der Agent keine Anweisung zur Interpretation und weiß möglicherweise nicht, welchen Pfad er einschlagen soll.

    Stattdessen: **Erkläre in natürlicher Sprache, was jede Variable bedeutet** und weise den Agenten explizit an, was er in jedem Szenario tun soll.

    <Warning>
      ### Was man nicht tun sollte

      ```
      Überprüfe die verfügbaren Kundendaten und wähle den Pfad:

      {{letter_received}} == "Yes" and {{rsv_present}} == "Yes" → Pfad 6.2
      {{letter_received}} == "Yes" and {{rsv_present}} == "No" → Pfad 6.3
      ```

      Was der Agent sieht, wenn kein Brief und kein RSV vorhanden ist:

      `0 == "Yes" and 0 == "Yes" → Pfad 6.2`

      Der Agent sieht die rohe Template-Syntax und weiß möglicherweise nicht, was zu tun ist, wenn ein Wert fehlt oder unerwartet ist.
    </Warning>

    <Check>
      ### Was man tun sollte

      ```
      # Verfügbare Kundendaten

      - Brief erhalten: {{letter_received}}
      - Rechtsschutzversicherung (RSV): {{rsv_present}}

      # Routing-Regeln

      - Wenn der Kunde den Brief erhalten hat UND eine Rechtsschutzversicherung hat → Pfad 6.2 folgen
      - Wenn der Kunde den Brief erhalten hat, aber KEINE Rechtsschutzversicherung hat → Pfad 6.3 folgen
      - Wenn der Briefstatus unbekannt oder leer ist → den Kunden fragen, ob er einen Brief erhalten hat, bevor fortgefahren wird
      ```

      So versteht der Agent die Bedeutung jeder Variable und weiß genau, was er in jedem Szenario tun soll – auch wenn Daten fehlen.
    </Check>

    ***

    **Variablen an der Einsatzstelle erneut erwähnen**

    Bei längeren Prompts empfiehlt es sich, die Variable oben zentral zu definieren und kurz vor der eigentlichen Verwendung nochmal zu referenzieren. Das stärkt den Kontext und reduziert Fehlanwendungen.
  </Tab>

  <Tab title="Gut zu wissen">
    * Variablennamen sind **case-sensitive** — `{{contractId}}` ist nicht dasselbe wie `{{ContractId}}`
    * Systemvariablen sind bei jedem Anruf automatisch verfügbar
    * Eigene Variablen werden nur befüllt, wenn der Kontakt diese Eigenschaft definiert hat
    * Ist eine Variable nicht definiert, sieht der Agent einen leeren Wert — sorge dafür, dass dein Prompt mit fehlenden Daten umgehen kann
    * Variablen lassen sich überall im Prompt nutzen — in der Identität, im Gesprächsskript oder in den Regeln

    <Tip>
      Um Unklarheiten zu vermeiden, teste deinen Prompt sowohl mit befüllten als auch mit leeren Variablenwerten, damit der Agent alle Szenarien sauber abdeckt.
    </Tip>
  </Tab>
</Tabs>
