# Twig-Templating in BuildingPro Suites

## Einführung in Twig-Templating

BuildingPro Suites verwendet [-> \[Externer Link\] Twig](https://twig.symfony.com/), eine leistungsstarke und flexible Template-Engine für JavaScript und PHP, zur dynamischen Generierung von Nachrichteninhalten. Twig ermöglicht es Ihnen, Vorlagen zu definieren, die von externen Messaging-Diensten wie SMS, Google Chat, Slack oder E-Mail verwendet werden.

### Twig.js-Version

Die derzeit in BuildingPro Suites implementierte Version von Twig.js ist **1.17.1**. Die vollständige Dokumentation und Implementierungshinweise sind unter den folgenden Links verfügbar:

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

***

## Twig-Syntax und Funktionen

Mit der Twig-Syntax können Sie dynamische Inhalte in Vorlagen einfügen und 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 verwenden

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

### Zeichenfolgen formatieren

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

***

## Verfügbare Vorlagen und Variablen in BuildingPro Suites

BuildingPro Suites bietet verschiedene Vorlagentypen für unterschiedliche Anwendungsfälle:

* [Ticket-Vorlage](#ticket-template)
* [Alarm-Vorlage](#alarm-template)
* [Passwort-zurücksetzen-Vorlage](https://www.google.com/search?q=%23password-reset-template)
* [yAxis-Formatter-Vorlage](#yaxis-formatter)
* [Legenden-Vorlage](#legend-template)

Jede dieser Vorlagen unterstützt bestimmte Variablen, die dynamisch mit den jeweiligen Daten befüllt werden.

***

## Ticket-Vorlage

### Verfügbare Variablen

Die Ticket-Vorlage kann zur automatisierten Erstellung von Ticket-Benachrichtigungen verwendet werden. Die folgenden Variablen sind verfügbar:

```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": "Zeitpunkt der Ticketerstellung",
    "assigned_to": "Zugewiesene Person oder Gruppe",
    "assigned_at": "Zeitpunkt der Zuweisung",
    "closed_at": "Zeitpunkt des Schließens",
    "proj_id": "Mandanten-ID",
    "asset_id": "Asset-ID",
    "alarm_id": "Alarm-ID, falls mit einem Alarm verknüpft",
    "alarm": "Details des verknüpften Alarms",
    "modified_by": "Letzter Bearbeiter",
    "modified_at": "Zeitpunkt der letzten Änderung",
    "contact": "Kontaktinformationen",
    "tags": "Liste der mit dem Ticket verknüpften Tags"
  }
}
```

### Beispiel einer Ticket-Vorlage

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

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

***

## Alarm-Vorlage

### Verfügbare Variablen

Die Alarmvorlage basiert auf einem Testdatensatz und enthält umfangreiche Details zu Alarmen und den zugehörigen Assets.

```json
{
  "alarm": {
    "low": "Unterer Grenzwert",
    "high": "Oberer Grenzwert",
    "tags": "Liste der mit dem Alarm verknüpften Tags",
    "prio": "Prioritätsstufe des Alarms",
    "ack_p": "Gibt an, ob der Alarm bestätigt werden muss",
    "equal": "Gibt an, ob ein Gleichheitsvergleich durchgeführt wird",
    "enable": "Aktivierungsstatus des Alarms",
    "urldoc": "Dokumentations-URL",
    "func_id": "Funktionale ID des Alarms",
    "msg": "Die aufgelöste Alarmmeldung",
    "message": {
      "come": {
        "de": "{{asset.name}} ({{alarm.val}})",
        "en": "{{asset.name}} ({{alarm.val}})",
        "fr": "{{asset.name}} ({{alarm.val}})",
        "it": "{{asset.name}} ({{alarm.val}})"
      },
      "gone": "Nachricht, wenn der Alarm endet"
    },
    "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": "Benachrichtigungsauslöser (z. B. 'R' für Erinnerung)",
    "check_type": "Art der Alarmprüfung",
    "created_at": "Zeitpunkt der Alarmerstellung",
    "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": "Breitengrad des Assets",
    "lon": "Längengrad 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": "Mandanten-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 einer Alarm-Vorlage

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

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

***

## Benutzer-Vorlage

Die *Benutzer-Vorlage* ermöglicht den Zugriff auf benutzerspezifische Informationen – insbesondere für Benachrichtigungszwecke (z. B. E-Mail, Chat oder Alarmweiterleitung). Sie kann in allen Vorlagen verwendet werden, in denen 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 Sprachnachrichten (z. B. eCall Voice)",
    "sms": "E-Mail-Adresse für SMS-Benachrichtigungen (z. B. eCall SMS)"
  }
}
```

### Beispiel einer Benutzer-Vorlage

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

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

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

***

## Passwort-zurücksetzen-Vorlage

### Verfügbare Variablen

Die Passwort-zurücksetzen-Vorlage wird in BuildingPro Suites 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": "Eindeutiges Token zum Zurücksetzen des Passworts"
}
```

### Beispiel einer Passwort-zurücksetzen-Vorlage

```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>

Wenn Sie dies nicht angefordert haben, können Sie diese E-Mail ignorieren.

Stellen Sie sicher, dass der Link unverändert bleibt, damit die Funktion erhalten bleibt:
href="https://{{ host }}/password-reset/{{ password_reset_token }}"
```

{% hint style="warning" %}
Stellen Sie sicher, dass der Link unverändert bleibt, damit die Funktion erhalten bleibt: href="https\://{{host}}/password-reset/{{password\_reset\_token}}"
{% endhint %}

***

## yAxis-Formatter

Der yAxis-Formatter bestimmt die Anzeige 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 Werts (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}}` – Art der Aggregation (z. B. Durchschnitt, Summe)

#### Beispiel eines yAxis-Formatters

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

Ergebnis für Temperaturdaten: → `22,5 °C (Raumtemperatur)`

***

## Legenden-Vorlage

Die Legenden-Vorlage bestimmt die Anzeige der Legendenbeschriftung in Diagrammen. Sie beschreibt die Datenreihe, indem sie den Namen des Assets oder der Datenreihe mit Attributinformationen kombiniert.

### Verfügbare Variablen für die Legenden-Vorlage

* `{{unit}}` – Einheit des Werts (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}}` – Art der Aggregation (z. B. Durchschnitt, Summe)

### Beispiel einer Legenden-Vorlage

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

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

***

## Fazit

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


---

# Agent Instructions: 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/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.
