# 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. Mit Twig können Sie Vorlagen 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\] Twig.js-Implementierungshinweise](https://github.com/twigjs/twig.js/wiki/Implementation-Notes)

***

## Twig-Syntax und Funktionen

Die Twig-Syntax ermöglicht es Ihnen, 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 verwenden

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

### Zeichenketten 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-Reset-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 für die automatische Generierung 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, sofern verfügbar",
    "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": "Projekt-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 für eine 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 Alarm-Vorlage 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": "Zeigt an, ob der Alarm bestätigt werden muss",
    "equal": "Zeigt an, ob ein Gleichheitsvergleich durchgeführt wird",
    "enable": "Aktivierungsstatus des Alarms",
    "urldoc": "Dokumentations-URL",
    "func_id": "Funktions-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": "Zeigt 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, zu dem der Alarm verschwunden ist",
    "ack_text": "Bestätigungstext",
    "ack_user_id": "ID des bestätigenden Benutzers"
  },
  "locale":"Sprache- 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": "Projekt-ID",
    "archived": "Archivierungsstatus",
    "asset_id": "Eindeutige Asset-ID",
    "acl_access": "Zugriffsstatus",
    "asset_type": "Art des Assets",
    "tracker_id": "Tracker-ID",
    "description": "Beschreibung des Assets",
    "acl_permissions": "Zugriffsberechtigungen"
  }
}
```

### Beispiel für eine 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

Der *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 Sprachbenachrichtigungen (z. B. eCall Voice)",
    "sms": "E-Mail-Adresse für SMS-Benachrichtigungen (z. B. eCall SMS)"
  }
}
```

### Beispiel für eine 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-Reset-Vorlage

### Verfügbare Variablen

Die Passwort-Reset-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": "Eindeutiger Token zum Zurücksetzen des Passworts"
}
```

### Beispiel für eine Passwort-Reset-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, um die Funktionalität zu erhalten:
href="https://{{ host }}/password-reset/{{ password_reset_token }}"
```

{% hint style="warning" %}
Stellen Sie sicher, dass der Link unverändert bleibt, um die Funktionalität zu erhalten: 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 für einen yAxis-Formatter

```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 für eine 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 erstellt 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).
