WeclappMailTemplateService
App\Services\WeclappMailTemplateService
Lädt Mail-Templates aus Weclapp (mailTemplate/id/{id}) und stellt sie als typisierte MailTemplateData-DTO zur Verfügung.
Wird primär vom Grenke MissingInfo-Mailflow genutzt.
DI
use App\Services\WeclappMailTemplateService;
public function __construct(
protected WeclappMailTemplateService $weclappMailTemplateService
) {}
API
getById(string|int $templateId): MailTemplateData
Gibt eine MailTemplateData-DTO zurück mit subject und body. Robust gegen die unterschiedlichen Feldnamen, die Weclapp je nach Sprach-Locale liefert (subject / Subject, text / body / mailBody / html / …).
$template = $this->weclappMailTemplateService->getById(12345);
$template->subject; // "Rückfrage zu Ihrem Vorgang"
$template->body; // raw Weclapp template string mit ..variableName.. und [[if]]/[[ifnot]]
getTemplateById(string|int $templateId): array
Wie oben, aber gibt das rohe JSON-Array zurück. Wirft RuntimeException, wenn keine JSON-Antwort kommt.
$raw = $this->weclappMailTemplateService->getTemplateById(12345);
renderTemplate(array $template, array $variables = []): array
Rendert Subject + Body in einem Call. Verwendet intern Blade::render() und einen einfachen Placeholder-Konverter (..varName.. → {{ $varName ?? "" }}).
$rendered = $this->weclappMailTemplateService->renderTemplate($raw, [
'companyName' => 'Acme GmbH',
'orderDate' => '12.04.2026',
]);
$rendered['subject']; // "Rückfrage zu Ihrem Vorgang"
$rendered['body']; // "Sehr geehrte Acme GmbH..."
$rendered['raw_template']; // Original-Array
Für komplexere Conditionals (
[[if x]] … [[endif]]) nutzt der MissingInfoMailFlowService stattdessen denWeclappTemplateRendererService, der mehr Direktiven kann.
Beispiel — kompletter Flow im Mail-Service
$templateId = config('grenke.missing_info_mailflow.template_id');
$template = $this->weclappMailTemplateService->getById($templateId);
$subject = $template->subject ?: 'Rückfrage zu Ihrem Vorgang';
$html = $this->weclappTemplateRendererService->render($template->body, [
'formalSalutation' => 'Sehr geehrte Frau Dr. Paulsen',
'orderDate' => '12.04.2026',
]);
Mail::to($recipient)->send(new RenderedWeclappTemplateMail($subject, $html));
Template-Konvention in Weclapp
Damit das Rendering klappt, müssen die Templates in Weclapp mit dieser Syntax angelegt werden:
Sehr geehrte ..formalSalutation..,
zu Ihrem Auftrag vom ..orderDate.. fehlen uns noch folgende Angaben:
[[if technicianAppointment]]
Bitte bestätigen Sie den Techniker-Termin am ..technicianAppointmentDate.. um ..technicianAppointmentTime..
[[endif]]
[[ifnot technicianAppointment]]
Bitte teilen Sie uns einen passenden Techniker-Termin mit.
[[endif]]
Die unterstützten Variablen-Namen findest du im MissingInfoMailFlowService.