Benachrichtigungssystem
Die Hoffnungsträger Sprachbrücke verfügt über ein umfassendes Multi-Channel-Benachrichtigungssystem mit 37 verschiedenen Benachrichtigungstypen.
Übersicht
Benachrichtigungskanäle
- Email: Via Mailgun mit PDF-Anhängen (z.B. Rechnungen)
- Push: Via OneSignal für die mobile App (nur Sprachmittler)
- Database: In-App-Benachrichtigungen für Web und Mobile
Benutzerkontrolle
Jeder Benutzer kann in seinen Einstellungen für jeden Benachrichtigungstyp individuell festlegen, über welche Kanäle er informiert werden möchte.
Standard-Einstellungen nach Rolle:
- Auftraggeber: Email + Database aktiviert, keine Push
- Sprachmittler: Email + Push + Database aktiviert
- Admin: Nur Database aktiviert
Benachrichtigungstypen
1. Account-Benachrichtigungen
WelcomeMessage
- Zweck: Willkommensnachricht bei Registrierung
- Empfänger: Neue Benutzer (alle Rollen)
- Kanäle: Email, Database, Push (nur Sprachmittler)
AccountActivated
- Zweck: Benachrichtigung bei Freischaltung durch Admin
- Empfänger: Freigeschalteter Benutzer
- Kanäle: Email, Database
AccountDeactivated
- Zweck: Benachrichtigung bei Deaktivierung
- Empfänger: Deaktivierter Benutzer
- Kanäle: Email, Database
InterpreterRegistrationReceived
- Zweck: Bestätigung der Sprachmittler-Registrierung
- Empfänger: Registrierender Sprachmittler
- Kanäle: Email, Database
RequesterRegistrationReceived
- Zweck: Bestätigung der Auftraggeber-Registrierung
- Empfänger: Registrierender Auftraggeber
- Kanäle: Email, Database
ResetPasswordNotification
- Zweck: Passwort-Reset-Link
- Empfänger: Benutzer, der Passwort zurücksetzen möchte
- Kanäle: Nur Email
2. Auftrags-Benachrichtigungen
NewOrderCreated
- Zweck: Bestätigung der Auftragserstellung
- Empfänger: Auftraggeber
- Kanäle: Email, Database
- Zeitpunkt: Sofort nach Auftragserstellung
OrderCreatedSuccessfully
- Zweck: Alternative Bestätigung (bei expliziter Aktion)
- Empfänger: Auftraggeber
- Kanäle: Email, Database
NewOrderAvailable / UrgentOrderAvailable / RegularOrderAvailable
- Zweck: Neue Aufträge verfügbar zum Annehmen
- Empfänger: Passende Sprachmittler (nach Matching-Algorithmus)
- Kanäle: Push (primär), Database, Email (optional)
- Zeitpunkt: Nach Interpreter-Matching
- Standard: Push aktiviert, Email deaktiviert
- Besonderheit: Urgent-Orders haben höhere Priorität
OrderAcceptedOrRejected
- Zweck: Rückmeldung über Sprachmittler-Entscheidung
- Empfänger: Auftraggeber
- Kanäle: Email, Database
- Zeitpunkt: Nach Annahme/Ablehnung durch Sprachmittler
InterpreterDeclined
- Zweck: Sprachmittler hat abgelehnt
- Empfänger: Auftraggeber
- Kanäle: Email, Database
NoInterpreterFound
- Zweck: Kein passender Sprachmittler gefunden
- Empfänger: Auftraggeber
- Kanäle: Email, Database
- Zeitpunkt: Nach erfolglosem Matching
UpcomingAppointment
- Zweck: Terminerinnerung
- Empfänger: Auftraggeber UND Sprachmittler
- Kanäle: Push (Sprachmittler), Database, Email (optional)
- Zeitpunkt: 24h, 2h und 30min vor Termin
- Standard: Push aktiviert (Sprachmittler), Email deaktiviert
CheckInOutReminder
- Zweck: Erinnerung an Zeiterfassung
- Empfänger: Sprachmittler
- Kanäle: Push (primär), Database
- Zeitpunkt: Wenn Check-in/out fehlt
- Standard: Push aktiviert
OrderCompleted
- Zweck: Auftrag abgeschlossen
- Empfänger: Auftraggeber UND Sprachmittler
- Kanäle: Email, Database, Push (Sprachmittler)
- Zeitpunkt: Bei Statusänderung zu "Completed"
OrderStatusChanged
- Zweck: Generische Statusänderung
- Empfänger: Auftraggeber UND zugewiesener Sprachmittler
- Kanäle: Email, Database, Push (Sprachmittler)
- Standard: Email deaktiviert, nur Database aktiviert
3. Stornierungen
OrderCancelledByRequester
- Zweck: Auftraggeber hat storniert
- Empfänger: Zugewiesener Sprachmittler
- Kanäle: Email, Database
OrderCancelledByInterpreter
- Zweck: Sprachmittler hat storniert
- Empfänger: Auftraggeber
- Kanäle: Email, Database
OrderCancelledEnhanced
- Zweck: Generische Stornierung (Admin/System)
- Empfänger: Beide Parteien
- Kanäle: Email, Database
4. Rechnungs-Benachrichtigungen
InvoiceGenerated
- Zweck: Rechnung erstellt und eingereicht
- Empfänger: Auftraggeber (Zahlung) + Sprachmittler (Dokumentation)
- Kanäle: Email (mit PDF-Anhang), Database
- Zeitpunkt: Wenn Rechnung auf "Pending" gesetzt wird
- Besonderheit: PDF wird als Email-Anhang mitgeschickt
InvoiceStatusChanged
- Zweck: Rechnungsstatus hat sich geändert
- Empfänger: Auftraggeber + Sprachmittler
- Kanäle: Email (mit PDF bei "sent"), Database
- Besonderheit: PDF-Anhang bei Status "sent"
InvoiceRejected
- Zweck: Rechnung wurde abgelehnt
- Empfänger: Sprachmittler
- Kanäle: Email, Push, Database
- Zeitpunkt: Wenn Admin/Auftraggeber Rechnung ablehnt
InvoiceQuery
- Zweck: Rückfrage zur Rechnung
- Empfänger: Sprachmittler
- Kanäle: Email, Push, Database
NewInvoiceAfterDispute
- Zweck: Neue Rechnungsversion nach Klärung
- Empfänger: Auftraggeber
- Kanäle: Email, Database, Push
5. Zahlungs-Benachrichtigungen
PaymentInstructed
- Zweck: Zahlung wurde angewiesen
- Empfänger: Sprachmittler
- Kanäle: Email, Push, Database
- Zeitpunkt: Wenn Admin Zahlung anweist
PaymentReceived
- Zweck: Zahlung ist eingegangen
- Empfänger: Auftraggeber (Bestätigung) + Sprachmittler (Auszahlung)
- Kanäle: Email, Database
- Zeitpunkt: Wenn Zahlung bestätigt wird
PaymentReminder
- Zweck: Zahlungserinnerung bei Verzug
- Empfänger: Auftraggeber
- Kanäle: Email, Database
- Zeitpunkt: 7, 14 und 21 Tage nach Fälligkeit
- Automatisch: Täglich 09:00 Uhr via Cron
BillingStatusChanged
- Zweck: Abrechnungsstatus hat sich geändert
- Empfänger: Sprachmittler
- Kanäle: Email, Database
- Status-Übergänge: pending → processing → approved → paid
6. Bewertungen
RatingRequest
- Zweck: Bitte um Bewertung nach Auftragsabschluss
- Empfänger: Auftraggeber UND Sprachmittler (separate Benachrichtigungen)
- Kanäle: Email, Database
- Zeitpunkt: Nach Zahlungseingang (PaymentReceived)
- Besonderheit: Token-basierter Link ohne Login-Erfordernis
Benachrichtigungs-Template-System
Template-Verwaltung
Alle Benachrichtigungen verwenden anpassbare Templates, die im Admin-Panel bearbeitet werden können:
- Datenbank-Tabelle:
notification_templates - Sprachen: Deutsch (Standard), Englisch (Fallback)
- Pro Template: Betreff, Titel, Inhalt
- Variablen: Mustache-Style (z.B.
{{user_name}},{{order_number}}) - Markdown-Support: Templates werden in HTML konvertiert
Häufige Template-Variablen
| Variable | Bedeutung | Beispiel |
|---|---|---|
user_name | Name des Empfängers | "Max Mustermann" |
order_number | Auftragsnummer | "ORD-2025-001" |
order_url | Link zum Auftrag | https://... |
appointment_date | Termin-Datum | "30.10.2025" |
appointment_time | Termin-Uhrzeit | "14:30" |
location | Einsatzort | "Musterstraße 1..." |
invoice_number | Rechnungsnummer | "INV-2025-001" |
invoice_amount | Rechnungsbetrag | "150,00 €" |
interpreter_name | Name Sprachmittler | "Maria Müller" |
Benachrichtigungs-Präferenzen
Einstellungsmöglichkeiten
Jeder Benutzer kann für jeden Benachrichtigungstyp einzeln festlegen:
{
"notification_type": "OrderCompleted",
"channels": {
"database": true, // In-App (immer empfohlen)
"mail": true, // Email
"push": false // Push (nur Sprachmittler)
}
}
Verwaltung
- Web-Portal: Einstellungen → Benachrichtigungen
- Mobile App: Einstellungen → Push-Benachrichtigungen
- Admin-Panel: Benutzerverwaltung → Benachrichtigungseinstellungen
Global-Schalter
Administratoren können Benachrichtigungen global deaktivieren:
NOTIFICATIONS_DISABLED=true- Alle BenachrichtigungenEMAIL_NOTIFICATIONS_DISABLED=true- Nur EmailPUSH_NOTIFICATIONS_DISABLED=true- Nur Push
Automatische Benachrichtigungen (Cron-Jobs)
| Benachrichtigung | Zeitplan | Zweck |
|---|---|---|
UpcomingAppointment | Stündlich | Terminerinnerungen (24h, 2h, 30min) |
PaymentReminder | Täglich 09:00 | Zahlungserinnerungen (7, 14, 21 Tage) |
CheckInOutReminder | Stündlich | Check-in/out-Erinnerungen |
Technische Details
Versand-Mechanismus
- Synchron: Benachrichtigungen werden sofort versendet (nicht in Queue)
- Idempotenz: Caching verhindert Duplikate (z.B. Terminerinnerungen)
- Fehlerbehandlung: Fehlgeschlagene Benachrichtigungen werden geloggt
OneSignal Push-Integration
- Player-IDs: Werden in
devices-Tabelle gespeichert - Deep-Links: Öffnen spezifische Seiten in der App
- Targeting: Nach User-ID und Player-ID
- Plattformen: iOS + Android
Email-Anhänge
Folgende Benachrichtigungen können PDF-Anhänge enthalten:
InvoiceGenerated- Rechnung als PDFInvoiceStatusChanged- Rechnung als PDF (bei Status "sent")
Temporäre Download-Links
InvoiceGeneratedundInvoiceStatusChangedenthalten temporäre Download-URLs- Gültigkeit: 7 Tage
- Signed URLs: Laravel signed routes für Sicherheit
Zusammenfassung
| Kategorie | Anzahl Benachrichtigungen |
|---|---|
| Account-Management | 7 |
| Auftrags-Lifecycle | 10 |
| Stornierungen | 3 |
| Rechnungen | 5 |
| Zahlungen | 4 |
| Bewertungen | 1 |
| Gesamt | 37 |
Kanäle: 3 (Email, Push, Database)
Sprachen: 2 (Deutsch, Englisch)
Templates: Anpassbar im Admin-Panel
Benutzerkontrolle: Ja, pro Typ und Kanal
Letzte Aktualisierung: Oktober 2025