> For the complete documentation index, see [llms.txt](https://docs.buildings.ability.abb/collection/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.buildings.ability.abb/collection/german-14.2-freezed/academy/twig-templating-in-eliona.md).

# Twig-Templating in Eliona

## **Einführung in Twig Templating**

Eliona verwendet [-> \[Externer Link\] Twig](https://twig.symfony.com/), eine leistungsfähige und flexible Templating-Engine für JavaScript und PHP, zur dynamischen Erzeugung von Nachrichteninhalten. Twig ermöglicht es, Templates zu definieren, die von externen Nachrichtendiensten wie SMS, Google Chat, Slack oder E-Mail verwendet werden.

### **Twig.js Version**

Die aktuelle implementierte Version von Twig.js in Eliona ist **1.17.1**. Die vollständige Dokumentation und Implementierungsnotizen sind unter folgenden Links verfügbar:

* [-> \[Externer Link\] Twig.js Repository](https://github.com/twigjs/twig.js)
* [-> \[Externer Link\] Twig.js Implementierungsnotizen](https://github.com/twigjs/twig.js/wiki/Implementation-Notes)

***

## Twig-Syntax und Funktionen

Twig-Syntax ermöglicht es, dynamische Inhalte in Vorlagen einzufügen und zu verarbeiten. Einige häufig verwendete Funktionen sind:

### **Variablen ausgeben**

```twig
{{ alarm.val }}  {# Gibt den Wert des Alarms aus #}
{{ asset.name }}  {# Zeigt den Namen des betroffenen Assets an #}
```

### **Bedingungen verwenden**

```twig
{% if alarm.prio == 1 %}
    Achtung: Hohe Priorität!
{% else %}
    Normaler Alarm.
{% endif %}
```

### **Schleifen nutzen**

```twig
{% for tag in alarm.tags %}
    - {{ tag }}
{% endfor %}
```

### **Zeichenketten formatieren**

```twig
{{ alarm.message.come.de | upper }}  {# Gibt den Alarmtext in Grossbuchstaben aus #}
```

***

## **Verfügbare Templates und Variablen in Eliona**

Eliona bietet verschiedene Template-Typen für unterschiedliche Anwendungsfälle:

* [**Ticket-Template**](#ticket-template)
* [**Alarm-Template**](#alarm-template)
* [**Passwort-Reset-Template**](#passwort-reset-template)
* [**yAxis Formatter-Template**](#yaxis-formatter)
* [**Legend-Template**](#legend-template)

Jedes dieser Templates unterstützt spezifische Variablen, die dynamisch mit den jeweiligen Daten befüllt werden.

***

## **Ticket-Template**

### **Verfügbare Variablen**

Das Ticket-Template kann zur automatisierten Generierung von Ticket-Benachrichtigungen verwendet werden. Folgende Variablen stehen zur Verfügung:

```json
{
  "ticket": {
    "ticket_id": "Eindeutige ID des Tickets",
    "parent_id": "ID des übergeordneten Tickets, falls vorhanden",
    "title": "Titel des Tickets",
    "description": "Beschreibung des Tickets",
    "priority": "Priorität des Tickets",
    "reason": "Grund oder Ursache des Tickets",
    "state": "Aktueller Status des Tickets",
    "created_by": "Ersteller des Tickets",
    "created_at": "Erstellungszeitpunkt des Tickets",
    "assigned_to": "Zugewiesene Person oder Gruppe",
    "assigned_at": "Zeitpunkt der Zuweisung",
    "closed_at": "Zeitpunkt der Schließung",
    "proj_id": "Projekt-ID",
    "asset_id": "Asset-ID",
    "alarm_id": "Alarm-ID, falls mit einem Alarm verbunden",
    "alarm": "Details zum verknüpften Alarm",
    "modified_by": "Letzter Bearbeiter",
    "modified_at": "Zeitpunkt der letzten Änderung",
    "contact": "Kontaktinformationen",
    "tags": "Liste von Tags, die mit dem Ticket verbunden sind"
  }
}
```

### **Beispiel für ein Ticket-Template**

```twig
Neues Ticket: {{ ticket.title }}

Nachricht:
Ticket-ID: {{ ticket.ticket_id }}
Erstellt von: {{ ticket.created_by }}
Priorität: {{ ticket.priority }}
Beschreibung: {{ ticket.description }}
```

***

## **Alarm-Template**

### **Verfügbare Variablen**

Das Alarm-Template basiert auf einem Testdatensatz und enthält umfangreiche Details zu Alarmen und deren zugehörigen Assets.

```json
{
  "alarm": {
    "low": "Unterer Grenzwert",
    "high": "Oberer Grenzwert",
    "tags": "Liste von Tags, die mit dem Alarm verbunden sind",
    "prio": "Prioritätsstufe des Alarms",
    "ack_p": "Gibt an, ob der Alarm bestätigt werden muss",
    "equal": "Gibt an, ob ein Gleichheitscheck durchgeführt wird",
    "enable": "Aktivierungsstatus des Alarms",
    "urldoc": "Dokumentations-URL",
    "func_id": "Funktionale ID des Alarms",
    "msg": "Die aufgelöste Alarm Nachricht,
    "message": {
      "come": {
        "de": "{{asset.name}} ({{alarm.val}})",
        "en": "{{asset.name}} ({{alarm.val}})",
        "fr": "{{asset.name}} ({{alarm.val}})",
        "it": "{{asset.name}} ({{alarm.val}})"
      },
      "gone": "Nachricht bei Ende des Alarms"
    },
    "subject": "Betreff des Alarms",
    "subtype": "Untertyp des Alarms",
    "alarm_id": "Eindeutige Alarm-ID",
    "asset_id": "ID des betroffenen Assets",
    "attribute": "Betroffenes Attribut des Assets",
    "dont_mask": "Maskierungsstatus des Alarms",
    "notify_on": "Benachrichtigungstrigger (z. B. 'R' für Reminder)",
    "check_type": "Typ der Alarmüberprüfung",
    "created_at": "Erstellungszeitpunkt des Alarms",
    "created_by": "Ersteller des Alarms",
    "auto_ticket": "Gibt an, ob automatisch ein Ticket erstellt wird",
    "modified_at": "Zeitpunkt der letzten Änderung",
    "modified_by": "Letzter Bearbeiter",
    "ts": "Zeitstempel des Alarms",
    "val": "Wert des betroffenen Parameters",
    "multi": "Multiplikator für den Alarmwert",
    "ack_ts": "Zeitpunkt der Bestätigung",
    "gone_ts": "Zeitpunkt des Verschwindens des Alarms",
    "ack_text": "Bestätigungstext",
    "ack_user_id": "ID des bestätigenden Benutzers"
  },
  "locale":"Die Sprach- und Regionseinstellung",
  "domain_name": "Der Domainname der Umgebung",
  "asset": {
    "ar": "Aktivierungsstatus",
    "gai": "Globale Asset-ID",
    "lat": "Latitude des Assets",
    "lon": "Longitude des Assets",
    "name": "Name des Assets",
    "tags": "Liste der Tags des Assets",
    "expert": "Expertenmodus aktiviert",
    "storey": "Stockwerk des Assets",
    "urldoc": "Dokumentations-URL des Assets",
    "proj_id": "Projekt-ID",
    "archived": "Archivierungsstatus",
    "asset_id": "Eindeutige Asset-ID",
    "acl_access": "Zugriffsstatus",
    "asset_type": "Typ des Assets",
    "tracker_id": "Tracker-ID",
    "description": "Beschreibung des Assets",
    "acl_permissions": "Zugriffsberechtigungen"
  }
}
```

### **Beispiel für ein Alarm-Template**

```twig
Alarm für {{ asset.name }}

Nachricht:
Der Alarm "{{ alarm.message.come.de }}" wurde ausgelöst.
Attribut: {{ alarm.attribute }}
Wert: {{ alarm.val }}
```

***

## User-Template

Das *User-Template* ermöglicht den Zugriff auf benutzerspezifische Informationen – insbesondere für Benachrichtigungszwecke (z. B. E-Mail, Chat oder Alarmweiterleitung). Es kann in allen Templates verwendet werden, bei denen die Benutzerdaten verfügbar sind.

**Verfügbare Variablen**

```json
"user": {
  "email": "E-Mail-Adresse des Benutzers",
  "user_id": "Eindeutige Benutzer-ID",
  "lastname": "Nachname des Benutzers",
  "firstname": "Vorname des Benutzers",
  "google_chat": "Google Chat-Adresse (optional)",
  "slack": "Slack-Adresse (optional)",
  "mail2service": {
    "voice": "E-Mail-Adresse für Sprachbenachrichtigungen (z. B. eCall Voice)",
    "sms": "E-Mail-Adresse für SMS-Benachrichtigungen (z. B. eCall SMS)"
  }
}
```

### **Beispiel für ein User-Template**

```twig
Benachrichtigung an: {{ user.firstname }} {{ user.lastname }} ({{ user.email }})

Sprach-Alarm weiterleiten an: {{ user.mail2service.voice }}
SMS-Alarm weiterleiten an: {{ user.mail2service.sms }}

Slack-User: {{ user.slack }}
Google Chat: {{ user.google_chat }}
```

***

## **Passwort-Reset-Template**

### **Verfügbare Variablen**

Das Passwort-Reset-Template wird in Eliona verwendet, um Benutzern eine E-Mail mit einem Link zum Zurücksetzen ihres Passworts zu senden.

```json
{
    "host": "Domain der Umgebung, in der das System betrieben wird",
    "password_reset_token": "Einzigartiger Token zum Zurücksetzen des Passworts"
}
```

### **Beispiel für ein Passwort-Reset-Template**

```twig
Hallo,  

um Ihr Passwort zurückzusetzen, klicken Sie bitte auf den folgenden Link:  

<a href="https://{{ host }}/password-reset/{{ password_reset_token }}">Passwort zurücksetzen</a>  

Falls Sie diese Anfrage nicht gestellt haben, können Sie diese E-Mail ignorieren.  

Achten Sie darauf, dass der Link unverändert bleibt, um die Funktionalität zu behalten:  
href="https://{{ host }}/password-reset/{{ password_reset_token }}"
```

{% hint style="warning" %}
Achten Sie darauf das der Link unverändert bleibt um die Funktionalität bei zu behalten: href="https\://{{host}}/password-reset/{{password\_reset\_token}}"
{% endhint %}

***

## **yAxis Formatter**

Der **yAxis Formatter** bestimmt die Darstellung der **Achsenbeschriftung** in Diagrammen. Er zeigt den aktuellen Wert der Datenreihe zusammen mit zusätzlichen Attributinformationen an.

### **Verfügbare Variablen für den yAxis Formatter**

* `{{unit}}` – Einheit des Wertes (z. B. °C, %, kWh)
* `{{value}}` – Der aktuelle Wert der Datenreihe
* `{{attribute}}` – Name des Attributs
* `{{gai}}` – Globale Asset-ID
* `{{aggregatedDataField}}` – Datenfeld für die Aggregation
* `{{aggregatedDataRaster}}` – Raster, mit dem die Daten aggregiert wurden
* `{{aggregatedDataType}}` – Typ der Aggregation (z. B. Durchschnitt, Summe)

### **Beispiel für einen yAxis Formatter**

```twig
twigKopierenBearbeiten{{value}} {{unit}} ({{attribute}})
```

**Ergebnis für Temperaturdaten:**\
→ `22.5 °C (Raumtemperatur)`

***

## **Legend-Template**

Das **Legend-Template** bestimmt die Darstellung der **Legendenbeschriftung** in Diagrammen. Es beschreibt die Datenreihe, indem es den Namen des Assets oder der Datenreihe mit Attributinformationen kombiniert.

### **Verfügbare Variablen für das Legend-Template**

* `{{unit}}` – Einheit des Wertes (z. B. °C, %, kWh)
* `{{attribute}}` – Name des Attributs
* `{{gai}}` – Globale Asset-ID
* `{{name}}` – Name des Assets oder der Datenreihe
* `{{aggregatedDataField}}` – Datenfeld für die Aggregation
* `{{aggregatedDataRaster}}` – Raster, mit dem die Daten aggregiert wurden
* `{{aggregatedDataType}}` – Typ der Aggregation (z. B. Durchschnitt, Summe)

### **Beispiel für ein Legend-Template**

```twig
{{name}} - {{attribute}} ({{unit}})
```

**Ergebnis für einen Temperatursensor:**\
→ `Klimaanlage Büro 1 - Raumtemperatur (°C)`

***

## **Fazit**

Twig.js ermöglicht eine flexible und effiziente Nutzung von Templates in Eliona. Durch die Verwendung von Twig-Variablen und -Funktionen können personalisierte Inhalte für Tickets, Alarme und E-Mails generiert werden. Weitere Informationen zur Twig-Syntax sind in der offiziellen Dokumentation verfügbar: [-> \[Externer Link\] Twig.js Wiki](https://github.com/twigjs/twig.js/wiki/Implementation-Notes).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.buildings.ability.abb/collection/german-14.2-freezed/academy/twig-templating-in-eliona.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
