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

# Template-Verwaltung

> Umfassende Anleitung zum Erstellen, Verwalten und Verwenden von Nachrichtenvorlagen

## Einführung

Templates sind wesentliche Komponenten der Lovi API, die es ermöglichen, standardisierte und personalisierte Nachrichten für WhatsApp-Kommunikationen zu erstellen. Diese Anleitung deckt alle Operationen im Zusammenhang mit der Template-Verwaltung ab.

## 📋 Verfügbare Templates abrufen

Alle Templates abrufen, die für Ihr Unternehmen und Ihre Telefonnummer verfügbar sind.

### Endpunkt

```
GET https://cloud.lovi.ai/functions/v1/notify/templates?access_key={YOUR_ACCESS_KEY}&phone_number={PHONE_NUMBER}
```

### Abfrageparameter

| Parameter      | Erforderlich | Beschreibung                                          |
| -------------- | ------------ | ----------------------------------------------------- |
| `access_key`   | Ja           | Ihr eindeutiger API-Zugriffsschlüssel.                |
| `phone_number` | Ja           | Telefonnummer zur Filterung der Templates (ohne '+'). |

**Beispielanfrage:**

```
GET https://cloud.lovi.ai/functions/v1/notify/templates?access_key=your-api-key&phone_number=34666033135
```

### Antwort

Die API gibt ein **Array** von Template-Objekten zurück (nicht in einem Objekt verpackt).

```json theme={null}
[
  {
    "id": "696796403510039",
    "name": "welcome_message",
    "status": "APPROVED",
    "category": "MARKETING",
    "language": "en",
    "components": [
      {
        "text": "Welcome! This is a test message.",
        "type": "BODY"
      }
    ],
    "parameter_format": "POSITIONAL"
  }
]
```

**Wichtige Hinweise:**

* Templates werden nach Telefonnummer gefiltert
* Nur genehmigte Templates werden zurückgegeben
* Die Antwort ist ein direktes Array ohne Schlüssel-Wrapper

## 📝 Templates erstellen

### Template-Struktur

**Basis-Template:**

```json theme={null}
{
  "name": "welcome_user",
  "language": "de_DE",
  "content": "Hallo {{name}}! Willkommen bei {{company}}. Wie können wir Ihnen helfen?",
  "variables": ["name", "company"],
  "category": "UTILITY"
}
```

**Template mit Bild:**

```json theme={null}
{
  "name": "promo_with_image",
  "language": "de_DE",
  "content": "Schauen Sie sich unser Sonderangebot an!",
  "components": [
    {
      "type": "HEADER",
      "format": "IMAGE",
      "example": {
        "header_handle": ["https://example.com/image.jpg"]
      }
    },
    {
      "text": "Vielen Dank, dass Sie uns wählen!",
      "type": "FOOTER"
    }
  ],
  "category": "MARKETING"
}
```

### Genehmigungsprozess

**Template-Status:**

| Status     | Beschreibung             | Verfügbare Aktionen                    |
| ---------- | ------------------------ | -------------------------------------- |
| `draft`    | Template im Entwurf      | Bearbeiten, zur Genehmigung einreichen |
| `pending`  | Wartet auf Genehmigung   | Bearbeiten, Status prüfen              |
| `approved` | Genehmigt und verwendbar | In Benachrichtigungen verwenden        |
| `rejected` | Abgelehnt                | Bearbeiten und erneut einreichen       |

### Variablenvalidierung

**Variablen prüfen:**

```javascript theme={null}
function validateTemplateVariables(content, providedVariables) {
  const requiredVars = extractVariables(content); // {{var}} aus Inhalt extrahieren
  const providedVars = Object.keys(providedVariables);
  
  const missing = requiredVars.filter(v => !providedVars.includes(v));
  const extra = providedVars.filter(v => !requiredVars.includes(v));
  
  if (missing.length > 0) {
    throw new Error(`Fehlende Variablen: ${missing.join(', ')}`);
  }
  
  if (extra.length > 0) {
    console.warn(`Zusätzliche Variablen bereitgestellt: ${extra.join(', ')}`);
  }
}
```

## 🎯 Templates verwenden

### Einfache Benachrichtigung senden

**Mit genehmigtem Template:**

```javascript theme={null}
await loviService.sendNotification({
  contact: { number: "34666033135" },
  template: "welcome_user",
  variables: {
    name: "Hans",
    company: "TechCorp"
  }
});
```

### Benachrichtigungen planen

**Geplante Sendung:**

```javascript theme={null}
await loviService.sendNotification({
  contact: { number: "34666033135" },
  template: "appointment_reminder",
  variables: {
    name: "Hans",
    date: "25 Dezember",
    time: "10:00"
  },
  datetime_sending: "2024-12-24T20:00:00Z" // Am Vorabend
});
```

### Template-Kategorien

**Unterstützte Kategorien:**

* **MARKETING**: Werbung, Ankündigungen, Sonderangebote
* **UTILITY**: Bestätigungen, Updates, Belege
* **AUTHENTICATION**: Bestätigungscodes, Sicherheit

### Mehrsprachige Unterstützung

**Template auf Deutsch:**

```javascript theme={null}
await loviService.createTemplate({
  name: "welcome_user",
  language: "de_DE",
  content": "Hallo {{name}}! Willkommen bei {{company}}."
});
```

**Template auf Englisch:**

```javascript theme={null}
await loviService.createTemplate({
  name: "welcome_user", 
  language: "en_US",
  content": "Hello {{name}}! Welcome to {{company}}."
});
```

## 📊 Template-Analytik

### Leistungsmetriken

**Nutzungsstatistiken:**

```javascript theme={null}
const stats = await loviService.getTemplateStats("welcome_user");
// Gibt zurück: Zustellungen, Öffnungen, Klicks usw.
```

**Berichte nach Zeitraum:**

```javascript theme={null}
const report = await loviService.getTemplateReport({
  template: "welcome_user",
  start_date: "2024-01-01",
  end_date: "2024-01-31"
});
```

## ⚠️ Einschränkungen und Überlegungen

### Template-Einschränkungen

* **Inhaltslänge**: Max 1024 Zeichen
* **Variablen**: Max 20 pro Template
* **Templates pro Konto**: 100 aktive gleichzeitig
* **Erstellungsrate**: 10 Templates pro Tag

### Best Practices

**Template-Namen:**

```javascript theme={null}
// ✅ Gute Namen
"welcome_user"
"order_confirmation" 
"appointment_reminder"

// ❌ Zu vermeidende Namen  
"template1"
"new_template_2024"
"test"
```

**Template-Inhalt:**

```javascript theme={null}
// ✅ Klar und prägnant
"Hallo {{name}}, Ihr Termin ist für {{date}} um {{time}} bestätigt."

// ❌ Zu lang oder verwirrend
"Sehr geehrter Kunde {{name}}, wir freuen uns, Ihnen mitteilen zu können, dass Ihre Buchung bei unserem Unternehmen für den gewünschten Service korrekt in unserem System für das Datum des {{date}} mit der vorgesehenen Uhrzeit von {{time}} Uhr registriert wurde. Wir bitten Sie, 15 Minuten vor der festgelegten Uhrzeit zu erscheinen."
```

### Sicherheit

**Eingabebereinigung:**

```javascript theme={null}
function sanitizeVariables(variables) {
  const sanitized = {};
  for (const [key, value] of Object.entries(variables)) {
    // Potenziell gefährliche Zeichen entfernen
    sanitized[key] = String(value).replace(/[<>]/g, '');
  }
  return sanitized;
}
```

Templates sind entscheidend für effektive WhatsApp-Kommunikation. Befolgen Sie diese Richtlinien, um die Wirkung Ihrer Kommunikationskampagnen zu maximieren.
